说明-如您所见,以下代码是一个包中的超类作为API,而另一个包中的子类作为API,现在我要做的是访问子类中“ level”变量的值。 / p>
问题是超类没有包含下面提到的变量的任何getter,因为它仅包含setter,因此当我尝试使用子类访问值时,它始终将“ Debug”作为值。
但是在Eclipse中调试时,它会显示原始运行时值。 我该如何实现
public class CustomLogger {
protected String level = "Debug";
protected String category;
}
public class DisplayLogger extends CustomLogger{
public void childMethod(){
CustomLogger customLogger = someMethod(); // Return object at runtime
customLogger.level; // give compiletime error as is protected
System.out.println(this.level); // gives always "Debug" as output
}
}
答案 0 :(得分:0)
您可以通过 Reflection 来实现。另一种选择是创建公共获取者/设置者。
答案 1 :(得分:0)
尝试一下!
package A;
public class CustomLogger {
protected String level = "Debug";
}
package B;
import A.CustomLogger;
public class DisplayLogger extends CustomLogger {
public void childMethod(){
CustomLogger customLogger = new CustomLogger();
System.out.println(customLogger.level;);
}
}