EclipseJDT Source Viewer

Home|eclipse_jdt/src/org/eclipse/jdt/core/dom/MethodReference.java
1/*******************************************************************************
2 * Copyright (c) 2013, 2014 IBM Corporation and others.
3 *
4 * This program and the accompanying materials
5 * are made available under the terms of the Eclipse Public License 2.0
6 * which accompanies this distribution, and is available at
7 * https://www.eclipse.org/legal/epl-2.0/
8 *
9 * SPDX-License-Identifier: EPL-2.0
10 *
11 * Contributors:
12 *     IBM Corporation - initial API and implementation
13 *******************************************************************************/
14package org.eclipse.jdt.core.dom;
15
16import java.util.List;
17
18/**
19 * Abstract base class of all AST node types that represent a method reference
20 * expression (added in JLS8 API).
21 *
22 * <pre>
23 * MethodReference:
24 *    CreationReference
25 *    ExpressionMethodReference
26 *    SuperMethodReference
27 *    TypeMethodReference
28 * </pre>
29 * <p>
30 * A method reference that is represented by a simple or qualified name,
31 * followed by <code>::</code>, followed by a simple name can be represented
32 * as {@link ExpressionMethodReference} or as {@link TypeMethodReference}.
33 * The ASTParser currently prefers the first form.
34 * </p>
35 *
36 * @see CreationReference
37 * @see ExpressionMethodReference
38 * @see SuperMethodReference
39 * @see TypeMethodReference
40 * @since 3.10
41 */
42@SuppressWarnings({"rawtypes"})
43public abstract class MethodReference extends Expression {
44
45    /**
46     * The type arguments (element type: {@link Type}).
47     * Defaults to an empty list (see constructor).
48     */
49    ASTNode.NodeList typeArguments;
50
51    /**
52     * Creates and returns a structural property descriptor for the "typeArguments"
53     * property declared on the given concrete node type (element type: {@link Type}).
54     *
55     * @return the property descriptor
56     */
57    static final ChildListPropertyDescriptor internalTypeArgumentsFactory(Class nodeClass) {
58        return new ChildListPropertyDescriptor(nodeClass"typeArguments"Type.classNO_CYCLE_RISK); //$NON-NLS-1$
59    }
60
61    /**
62     * Returns the structural property descriptor for the "typeArguments" property
63     * of this node (element type: {@link Type}).
64     *
65     * @return the property descriptor
66     */
67    abstract ChildListPropertyDescriptor internalTypeArgumentsProperty();
68
69    /**
70     * Returns the structural property descriptor for the "typeArguments" property
71     * of this node (element type: {@link Type}).
72     *
73     * @return the property descriptor
74     */
75    public final ChildListPropertyDescriptor getTypeArgumentsProperty() {
76        return internalTypeArgumentsProperty();
77    }
78
79    /**
80     * Creates a new AST node for a method reference owned by the given AST.
81     * <p>
82     * N.B. This constructor is package-private.
83     * </p>
84     *
85     * @param ast the AST that is to own this node
86     */
87    MethodReference(AST ast) {
88        super(ast);
89        this.typeArguments = new ASTNode.NodeList(getTypeArgumentsProperty());
90    }
91
92    /**
93     * Returns the live ordered list of type arguments of this method reference.
94     *
95     * @return the live list of type arguments
96     *    (element type: {@link Type})
97     */
98    public List typeArguments() {
99        return this.typeArguments;
100    }
101
102    /**
103     * Resolves and returns the binding for the method referenced by this
104     * method reference expression.
105     * <p>
106     * Note that bindings are generally unavailable unless requested when the
107     * AST is being built.
108     * </p>
109     *
110     * @return the method binding, or <code>null</code> if the binding cannot
111     * be resolved
112     */
113    public IMethodBinding resolveMethodBinding() {
114        return this.ast.getBindingResolver().resolveMethod(this);
115    }
116}
117
MembersX
MethodReference:MethodReference
MethodReference:typeArguments
MethodReference:resolveMethodBinding
MethodReference:internalTypeArgumentsFactory
MethodReference:internalTypeArgumentsProperty
MethodReference:getTypeArgumentsProperty
Members
X