- public class Person{
- public String name;
- public static void main(String[] args) throws SecurityException, NoSuchFieldException {
- Person p1 = new Person();
- Field f = p1.getClass().getField("name");
- String s = "this is a string";
- System.out.println(f.getType());
- System.out.println(s.getClass()==f.getType());
- }
- }
复制代码 输出
class java.lang.String
true
我理解为:往大了说,getType是返回Field的类型,即String类型,后面的s.getClass()也是返回类型的,也是String类型,故相等。
往小了说,这是在比较字节码,拿getType返回类型的字节码与getClass返回的类型的字节码。尽管内存里有多个String对象,但String类的字节码却是仅有独一无二的一份,在这里相当于基本数据类型的比较,故用==,最后还是相等。 |