Я хожу по кругу на этом.
У меня есть класс Person, например,
public class Person {
String name = "";
}
Теперь я хотел бы проанализировать этот экземпляр класса и выяснить, какой класс называется именем.объявлен как.
Итак, name = String или java.lang.String
Это мой код:
'this' является экземпляром Person.
try {
String className = this.getClass().getName();
Class cls = Class.forName(className);
Field fieldlist[] = cls.getDeclaredFields();
for (int i = 0; i < fieldlist.length; i++) {
Field fld = fieldlist[i];
int mod = fld.getModifiers();
System.out.println("1. " + fld.toGenericString());
System.out.println("2. " + fld.getName());
System.out.println("3. " + fld.getGenericType() + "]");
Object oj = fld.getType();
// Says that 4: class java.lang.String
System.out.println("4: " + oj.toString());
Class c1 = oj.getClass();
// Should throw Exception
String stype = c1.getDeclaringClass().toString();
System.out.println("5. " + stype);
}
}
catch (Throwable e) {
System.err.println(e);
}
Мне удалось добраться до части, в которой говорится:
класс java.lang.String
, но мне нужно, чтобы он был "java.lang.String"
Есть идеи?