簡體   English   中英

Getter 返回舊值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM