gpt4 book ai didi

java - Java中向匿名类传递参数

转载 作者:行者123 更新时间:2023-12-02 05:53:28 24 4
gpt4 key购买 nike

我正在尝试编写匿名内部类

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));

关于java - Java中向匿名类传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23331295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com