Java 在匿名(内部)类中调用方法
我想创建一个主类并调用Java 在匿名(内部)类中调用方法,java,class,interface,inner-classes,anonymous-class,Java,Class,Interface,Inner Classes,Anonymous Class,我想创建一个主类并调用methodExample。我该怎么做?由于您的类实现了Example接口,并且该接口上存在void methodExample(),所以您只需通过接口引用对象,并调用其方法: interface Example{ void methodExample(); } class Y{ void do(Example x) { } } class X{ void methodX() { Y y = new Y(); y.do(new E
methodExample
。我该怎么做?由于您的类实现了Example
接口,并且该接口上存在void methodExample()
,所以您只需通过接口引用对象,并调用其方法:
interface Example{
void methodExample();
}
class Y{
void do(Example x) { }
}
class X{
void methodX() {
Y y = new Y();
y.do(new Example() {
public void methodExample() {
System.out.println("methodExample");
}
});
}
}
上述方法是有效的,因为实现
Example
的所有类(包括所有匿名实现)的对象在编译时都可以实现methodExample()
如果您没有访问类Y
的权限,那么唯一的方法就是首先重写doIt()
本身,使用匿名内部类,然后调用重写的方法,例如:
class Y{
public void doIt(Example x) {
x.methodExample();
}
}
要称之为此,您只需执行以下操作:
class X {
void methodX() {
Y y = new Y() {
@Override
void doIt(Example x) {
x.methodExample();
}
};
y.doIt(new Example() {
public void methodExample() {
System.out.println("methodExample");
}
});
}
}
不相关但值得注意的是:
do
不是有效的标识符,因为它也是一个关键字。
public static void main(String[] args) throws Exception {
X x = new X();
x.methodX();
}