如何访问Super类动态对象的受保护成员变量

时间:2018-10-11 10:23:26

标签: java protected

说明-如您所见,以下代码是一个包中的超类作为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
}
}

2 个答案:

答案 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;);
    }
}