【发布时间】:2021-11-04 03:30:38
【问题描述】:
我将举一个简单的例子,因为以这种方式查看并不那么复杂。下面示例的输出将为空:
abstract class SuperClass { // it doesn't need to be abstract but that's my case now
// needs to be static
static String var_name = null;
void method(){
System.out.println(var_name);
}
}
class subclass{
// needs to be static
static String var_name = "I need to print this"
void otherUnrelatedMethod(){
method(); // calling method() here gives me null
}
}
我知道实现我想要的两个选项:
我可以通过将 var_name 作为参数传递给 method() 轻松实现这一点,这是我现在正在使用的选项。
我也可以重写method(),但是这样做会带来很多工作,因为有很多子类,而且method()实际上很大。
除了这两个,还有其他选择吗?即:如果我可以使用带有子类类型<S extends SuperClass> 的边界来获得理想的效果。甚至使用反射,虽然我听说它会使程序变得很慢
【问题讨论】:
-
您能否创建另一个方法
getVarName()以返回var_name,然后在子类中覆盖该方法? -
@Progman 我不知道...也许吧?我期待具有反射或与子类类型绑定的东西。我想我会关闭它,因为这种 Java 的不灵活性让我很生气。
标签: java abstract-class