![](/img/trans.png)
[英]In Java is there a way to name an ArrayList inside the ArrayList?
[英]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;
}
}
然后在Rectangle
或Circle
class,甚至在Shapes
class 中,你可以創建一個toString
方法:
@Override
public String toString() {
return getName() + " has an area of : " + getArea();
}
您可以將public/protected abstract String getShapeName()
方法添加到 Shape class 並在Rectangle
和Circle
類中提供實現。 然后你就可以在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.