我有兩個Java類:A類和B類,都在同一個包中。現在我在類B中創建了兩個類A的對象,現在從類A內部我想要在類B中聲明類A的對象的名稱。
我該怎麼做?如何獲取類的對象名稱?
1
A
回答
2
一種方法將是B類傳遞一個在A實例的「名」到A的構造函數:
public class A {
public A(String name) {
this.name = name;
}
private final String name;
}
這樣,A的每個實例都將知道它被賦予的名稱(誰構建它)。
請注意,A沒有任何方法可以找出目前用於指代它的變量的名稱。這是因爲參考變量可以隨意分配:
A foo = new A(); // A's name could be considered to be "foo"
A bar = foo; // now, is A's name "foo" or is it "bar"? (It's both!)
foo = null; // and now, it's only referred by "bar".
0
您想要對象的名稱或引用對象嗎?您可以讓B類構造函數註冊使用A類創建的任何對象。如果您可以提供有關您想要在A類內使用B類對象的更多信息,那麼也許我們可以更好地回答您的問題。
歡呼聲。
1
你可以做這樣的事情:
public class NameRetriever {
public static List<String> retrieveNames(Class<?> ownerClass, Class<?> clazzToFind) {
List<String> names = new ArrayList<String>();
for (Field field : ownerClass.getDeclaredFields()) {
if (field.getType().getName().equals(clazzToFind.getName())) {
names.add(field.getName());
}
}
return names;
}
}
NameRetriever.retrieveNames(ClassB.class, ClassA.class);
這將找到包含ClassB類中的ClassA類型的所有成員變量。如果您想獲取實例化對象的值,可以將ownerClass參數更改爲「Object object」並獲取字段的值而不是名稱。
相關問題
- 1. 獲取通用對象的類名稱
- 2. QT:獲取對象的類名稱
- 3. 如何獲取JValue對象的名稱
- 4. 獲取對象的名稱
- 5. 獲取對象的名稱
- 6. SimpleXML - 如何獲取根對象名稱?
- 7. 如何獲取對象名稱?
- 8. 如何獲取對象名稱?
- 9. 如何從類別名稱中獲取類別對象
- 10. 如何獲取節點JS中的對象的類名稱
- 11. 獲取對象和屬性名稱的類型名稱?
- 12. 如何獲取對象的類名?
- 13. 如何獲取String對象的類名?
- 14. jquery:獲取對象名稱?
- 15. C# - 獲取對象名稱?
- 16. 獲取對象名稱
- 17. 如何在JavaScript中獲取此對象的類型名稱?
- 18. 如何獲取Flex對象的(靜態)類名稱?
- 19. 如何獲取動物對象的類別名稱?
- 20. 從對象中獲取對象名稱
- 21. C#獲取對象對的名稱
- 22. 如何從類內部獲取對象名稱?
- 23. 如何使用Hibernate Criteria對象獲取實體或類名稱
- 24. 如何從查詢對象中獲取分類術語名稱
- 25. 如何獲取對象類定義的模塊名稱而不是對象實例化的模塊名稱?
- 26. 如何獲得給定類名稱的未知類的對象
- 27. 獲取參數對象的名稱
- 28. 獲取循環內對象的名稱
- 29. 獲取對象ddplyed的名稱
- 30. PHP JSON獲取對象的名稱
這不是您最近詢問的另一個問題的簡單表述嗎? http://stackoverflow.com/questions/1932164/how-to-get-the-object-reference-of-a-class – abyx