簡體   English   中英

將參數傳遞給Java中的匿名類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM