gpt4 book ai didi

java - 访问内部匿名类成员

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:42:25 25 4
gpt4 key购买 nike

除了使用反射访问匿名内部类的成员之外,还有什么办法吗?

最佳答案

匿名内部类有类型但没有名称。

您可以访问未由指定父类(super class)型定义的字段。然而,一旦分配给命名类型变量,接口(interface)就会丢失。

显然,您可以从内部类本身访问这些字段。添加代码的一种方法是通过实例初始化程序:

final AtomicInteger y = new AtomicInteger();
new Runnable() {
int x;
{
x = 5;
doRun(this);
y.set(x);
}
public void run() {
... blah ...
}
};

匿名内部类表达式返回的值具有匿名类型,因此您有一次机会在类本身之外使用它:

final int y = new Runnable() {
int x;
{
x = 5;
doRun(this);
}
public void run() {
... blah ...
}
}.x;

您还可以通过声明类似于以下内容的方法传递它:

<T extends Runnable> T doRun(T runnable);

关于java - 访问内部匿名类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/319765/

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