[英]Getter returning old value
我最近遇到了對象初始化的問題。
我有一個類(它以這種方式設置用於持久數據存儲和加載)
public class Example extends SuperExample{
private String name = "";
public Example(){
super();
}
public String getName(){
return name;
}
@Override
protected void load(){
name = "Example";
}
}
public abstract class SuperExample{
protected abstract void load();
public SuperExample(){
//Do stuff
load();
}
}
在對象初始化后調用的getName()
返回""
而不是"Example"
。
知道這可能是什么根本原因嗎? 如果我要在構造函數中設置name
,它工作正常。 但是當它通過super
,它會出錯。
Example e = new Example();
System.out.println(e.getName());
初始化代碼:private String name = ""; 在父構造函數之后運行。 刪除初始化,它將正常工作。 但是您不應該從構造函數調用可覆蓋的方法。 :)
private String name;
代替
private String name="";
這是因為我認為 Example 類方法是受保護的。 它不能從類外部調用,因此您正在調用超類方法。 那什么都不做,所以值仍然是""
。 要檢查這一點,請在 load 方法中添加一條打印語句並查看它是否被調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.