gpt4 book ai didi

java - 是否可以通过 .THIS 关键字指向匿名类?

转载 作者:行者123 更新时间:2023-11-30 06:54:52 25 4
gpt4 key购买 nike

SSCCE:

public class Test {
public Test() {
new Anonymous1() {
void validate() {
new Anonymous2() {
int calculate() {
return Math.abs(Anonymous1.this.getValue()); // compilation error - Anonymous1 is not an enclosing class
}
};
}
};
}
}

abstract class Anonymous1 {
abstract void validate();

int getValue() {
return 0;
}
}

abstract class Anonymous2 {
abstract int calculate();
}

我知道它看起来很复杂而且无法使用,但我只是想知道是否可以使用 .thisAnonymous2 指向 Anonymous1 类> 指针,或任何其他方式。

最佳答案

你需要在类里面做。

public Test() {
new Anonymous1() {
void validate() {
final Object this1 = this;
new Anonymous2() {
int calculate() {
return Math.abs(this1.getValue());
}
}
}
}
}

或者更好的是,先提取您需要的东西,然后有效地使用 Java 8 中添加的 final。

public Test() {
new Anonymous1() {
void validate() {
int value = getValue();
new Anonymous2() {
int calculate() {
return Math.abs(value);
}
}
}
}
}

如果 Anonymous1Anonymous2 是您可以在 Java 8 中使用 lambda 的接口(interface)。

public Test() {
Anonymous1 a = () -> {
int v = getValue();
Anonymous2 = a2 = () -> Math.abs(v);
};

关于java - 是否可以通过 .THIS 关键字指向匿名类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35935379/

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