簡體   English   中英

JAVA,有沒有辦法在我的 ArrayList 中顯示 object 的名稱

[英]JAVA, is there a way to display the name of an object in an ArrayList in my output

我正在開發一個根據面積比較形狀的應用程序。 它起作用了,我只是想讓 output 更好。

我有一個 Shapes 超類和兩個形狀子類 Rectangle 和 Circle。 他們都有 toString() 方法,output 他們的區域。

    @Override
    public String toString() {
        return " has an area of : " + getArea();
    }

我做了兩個圓圈,分別稱為圓圈 1 和圓圈 2。與矩形類似。 將它們存儲在名為 shapeList 的 ArrayList 中我使用以下代碼通過數組 go 和 output toString()。

for (Shapes s:shapesList) {
                System.out.println(s.toString());
            }

有沒有辦法讓我的 output 打印“矩形 1 有一個區域,圓 1 有一個區域等等。過去我在我的對象中設置了名稱,所以我可以在我的循環中使用 s.getName()。但我我想知道是否有另一種方法可以在我的 output 中獲取 object 名稱

我希望我已經解釋清楚了,第一次發帖!

好吧,你真的不能那樣做。 對象不包含變量名稱,這意味着您不能只打印變量的名稱,您正在打印:

Shapes rectangle = new Rectangle();
// the object Rectangle doesn't know the variable name - rectangle

另一方面,您可以創建一個名為name的變量並對其進行設置,這樣您就知道您正在調用哪個變量:

class Shapes {
    protected String name;
    
    public void setName(String name) {
        this.name = name
    }

    public String getName() {
        return this.name;
    }
}

然后在RectangleCircle class,甚至在Shapes class 中,你可以創建一個toString方法:

    @Override
    public String toString() {
        return getName() + " has an area of : " + getArea();
    }

您可以將public/protected abstract String getShapeName()方法添加到 Shape class 並在RectangleCircle類中提供實現。 然后你就可以在Shape.toString()中使用這個方法了

我正在開發一個根據面積比較形狀的應用程序。 它起作用了,我只是想讓 output 更好。

我有一個 Shapes 超類和兩個形狀子類 Rectangle 和 Circle。 他們都有 toString() 方法,output 他們的區域。

    @Override
    public String toString() {
        return " has an area of : " + getArea();
    }

我做了兩個圓圈,分別稱為圓圈 1 和圓圈 2。與矩形類似。 將它們存儲在名為 shapeList 的 ArrayList 中我使用以下代碼通過數組 go 和 output toString()。

for (Shapes s:shapesList) {
                System.out.println(s.toString());
            }

有沒有辦法讓我的 output 打印“矩形 1 有一個區域,圓 1 有一個區域等等。過去我在我的對象中設置了名稱,所以我可以在我的循環中使用 s.getName()。但我我想知道是否有另一種方法可以在我的 output 中獲取 object 名稱

我希望我已經解釋清楚了,第一次發帖!

this.getClass().getSimpleName(); 結合this.hashCode(); 可能是您正在尋找的 - 如果您不介意哈希碼的長度

getSimpleName();

返回源代碼中給出的基礎 class 的簡單名稱。 如果底層 class 是匿名的,則返回一個空字符串。

hashCode();

在合理可行的情況下,由 class Object定義的 hashCode 方法確實為不同的對象返回不同的整數。 (這通常通過將 object 的內部地址轉換為 integer 來實現,但這種實現技術不是必需的

你的```toString()` 看起來像這樣

@Override
public String toString() {
    return this.getClass().getSimpleName() + " " + this.hashCode() + " has an area of : " + getArea();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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