我有两个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