Sco*_*ion 4 java anonymous-inner-class
我搜索了这个,但遗憾的是找不到匹配,我在这样local anonymous inner class
的方法中有这个: -
new Object(){
public void open(){
// do some stuff
}
public void dis(){
// do some stuff
}
};
Run Code Online (Sandbox Code Playgroud)
在2 methods
里面(open,dis)
,我知道,如果我想使用他们中的任何一个,那就做
new Object(){
public void open(){
// do some stuff
}
public void dis(){
// do some stuff
}
}.open()
Run Code Online (Sandbox Code Playgroud)
现在我的问题是如果我想同时调用这两种方法怎么办?我该怎么做?
你可以创建一个这样的界面:
interface MyAnonymous {
MyAnonymous open();
MyAnonymous dis(); //or even void here
}
new MyAnonymous(){
public MyAnonymous open(){
// do some stuff
return this;
}
public MyAnonymous dis(){
// do some stuff
return this;
}
}.open().dis();
Run Code Online (Sandbox Code Playgroud)
编辑----
正如@Jeff指出的那样,只有在分配了引用时才需要接口.实际上,以下解决方案(由@JamesB引发)完全有效:
new MyObject(){
public MyObject open(){
// do some stuff
return this;
}
public MyObject dis(){
// do some stuff
return this;
}
}.open().dis();
Run Code Online (Sandbox Code Playgroud)
但这不会编译:
MyObject myObject = new MyObject(){
public MyObject open(){
// do some stuff
return this;
}
public MyObject dis(){
// do some stuff
return this;
}
};
myObject.open().dis(); //not compiling since anonymous class creates a subclass of the class
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
161 次 |
最近记录: |