[英]Passing parameter to anonymous class in Java
我正在嘗試寫一個匿名的內部課程
interface Face{
void seeThis(String what);
}
class Eyes {
public void show(Face f){}
}
public class Seen {
public void test() {
Eyes e = new Eyes();
e.show(new Face() {
@Override
public void seeThis(String what){
System.out.print(what);
}
});
public static void main(String[] args) {
Seen s = new Seen();
s.test();
}
}
如何調用seeThis()以及如何將參數傳遞給它?
方法seeThis()
屬於Face
類,該實例是匿名的,因此在不存儲對它的引用的情況下無法訪問。 如果要存儲引用,可以通過以下方式執行此操作:
public class Seen {
public Face face;
....
this.face = new Face() { ... };
e.show(this.face);
接着,
Seen s = new Seen();
s.face.seeThis();
現在,關於傳遞參數。 您有兩個選項 - 在匿名類之外聲明參數並使其成為final
以便可以通過此匿名類訪問,或者將匿名類替換為普通類並將參數傳遞給其構造函數:
方法一:
final int parameter = 5;
...(new Face() {
@Override
public void seeThis() {
System.out.println(parameter);
}
});
方法二:
public class MyFace implements Face() {
private final int parameter;
public MyFace(int parameter) {
this.parameter = parameter;
}
@Override
public void seeThis() {
System.out.println(parameter);
}
}
然后,
...
e.show(new MyFace(10));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.