让punt成为下一个变量
Point punt = p.point
其中p是A类的对象。 如何知道属性p.point的类的名称(即我需要一些打印A的句子?)
答案 0 :(得分:2)
p.point.getClass().getSimpleName()
<强>更新强>
或
p.point.getClass().getCanonicalName()
获取类 A 的字段 point 类型的规范名称,即fully qualified name, p 是此类 A 的实例。
现在,如果您想获得 p 是其实例的 A 类的简单名称,即&#34; A&#34;,则:
p.getClass().getSimpleName()
其他可能性,你想从A类本身内部知道A类的名称:
A.class.getSimpleName()
MethodHandles.lookup().lookupClass().getSimpleName()
答案 1 :(得分:0)
如果您需要获取类 A 的名称,那么您可以使用下一个表达式:
p.getClass().getName()
如果您需要从对象punt 中获取类 A 的名称,那么您不能。对象 punt 可以是类 A 的属性,也可以是许多其他不同类的属性。你不知道一个对象在里面是什么类。您需要直接访问对象 p 。让我用一个例子来解释:
public class Point {
....
public String toString() {
// from here, it's impossible to know what class is this object inside
}
}
public class A {
public Point point;
}
public class B {
public Point anotherPoint;
}
public static void main(String[] args) {
A p = new A();
B q = new B();
p.point = new Point();
q.point = p.point; // shared reference here!!
....
Point punt = p.point; // p is an attribute of A and B at the same time!!
System.out.println(p.getClass().getName()); // direct access to the "p" object
}