簡體   English   中英

是否可以用Java返回對象的名稱?

[英]Is it possible to return the name of an Object in Java?

假設您創建一個對象:

class newClass{
    public static void main(String[] args){
        Object o = new Object();
    }
}

是否可以將名稱以字符串“ o”或任何形式返回給定對象?

不,這是不可能的。 如果您確實要這樣做,則可能使用了錯誤的設計。 請注意,對象沒有名稱。 變量確實有一個名稱。

否。該對象不知道外界稱之為什么,即它有什么參考。

是否可以用Java返回對象的名稱?

如果您編寫如下內容:

String name = obj.toString();

它將返回對象的字符串表示形式,但這不是人類可讀的。 如果要執行此操作,則需要創建自定義對象並覆蓋toString()方法:

public class MyObject {

   private String name;


   public String toString() {
      return name;
   }
}

現在,當您編寫時:

String name = myObj.toString();

它將以人類可讀的形式返回名稱。 但是,如果要創建自定義對象,這取決於您的要求。 這樣,它非常簡單並且運行良好。

這是不可能的。

您可以使用Map<String, Object>來存儲從對象名稱到對象值的映射,然后返回鍵。

實際上,對象的“名稱”是一個編譯時間常數。 也就是說,一旦您編譯了代碼,它就不會改變,因此

Object o = new Object();
return "o";

從字面上會做你想要的。 哪個提出了問題,您為什么要這樣做?

使用Java反射是不可能的。 但是,如果使用調試信息進行編譯,則該信息將存儲在java類文件中。 您可以使用ASM之類的字節碼工程庫來進行挖掘。

注意:我只是閱讀了sajmon的答案,他在某種程度上擁有更優雅的用法

首先,這些家伙的答案是正確的

如果您真的需要

我會用MyObject之類的東西來擴展Object類

 public class MyObject {

 private String objectName;

    public MyObject(){
    }


    public MyObject(String name){
      setObjectName(name);
    }

    public getObjectName(){
     return this.objectName;
    }

    public setObjectName(String name){
     this.objectName = name;
    }
    }

但是隨后每次創建對象時,請改用MyObject實例,然后將對象名稱添加為構造函數參數

MyObject mine = new MyObject("mine");

話雖如此,關於您為什么可能需要它仍然是一個懸而未決的問題? :)

由於Java支持別名,因此這確實不可行。 別名意味着沒有保證對象只能由一個變量引用。

范圍界定只會使整個問題更加棘手,因為此時只有當前范圍內的引用才有用。 可能不止一個。

如果您解釋了這段代碼要達到的目的,這將有所幫助。

除了先前的答案之外,可能還有幾個具有不同標識符的不同變量,它們均引用同一對象。 變量可以在不同的時間引用不同的對象。

如果需要從對象到字符串的映射,建議使用Map<Object,String>

Jackson (Java):反序列化相同的屬性名但返回不同的對象。 其中一個返回 object 和第二個列表<object><div id="text_translate"><p>我有一個這樣的 POJO:</p><pre> public class NewClass { String name; @JsonProperty("productType") ProductType productType2005; List&lt;ProductType&gt; productType; }</pre><p> 我想將 json 反序列化為 Pojo。 問題是我的屬性名稱相同 productType 但我可以期待兩種不同的返回類型或數據結構。</p><ol><li> 返回ProductType</li><li> return List&lt;ProductType&gt;因為屬性名稱相同我如何有效地使用 Jackson 注釋來解決它?</li></ol><p> 我使用 rest-assured 進行反序列化,使用 Lombok 進行典型的 getter 和 setter。</p></div></object>

[英]Jackson (Java) : deserialization for the same property name but return different objects. for one it return object and second List<Object>

暫無
暫無

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

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