java.lang.reflect.Field中的toGenericString和toString有什么区别
输出如下:- intcom.sample.Demo.i intcom.sample.Demo.i 有人能告诉我这些方法之间有什么区别吗?好的,来自javadoc: toGenericString 返回描述此字段的字符串,包括其泛型类型 托斯特林 返回描述此字段的字符串 因此,如果您的字段没有泛型类型,则没有区别java.lang.reflect.Field中的toGenericString和toString有什么区别,java,tostring,Java,Tostring,输出如下:- intcom.sample.Demo.i intcom.sample.Demo.i 有人能告诉我这些方法之间有什么区别吗?好的,来自javadoc: toGenericString 返回描述此字段的字符串,包括其泛型类型 托斯特林 返回描述此字段的字符串 因此,如果您的字段没有泛型类型,则没有区别 有关泛型的mor信息,请查看此处:此处的真实答案:如有疑问,请阅读: 返回描述此字段的字符串,包括其泛型类型。格式是字段的访问修饰符(如果有),后跟泛型字段类型,后跟空格,后跟声明字段的
有关泛型的mor信息,请查看此处:此处的真实答案:如有疑问,请阅读: 返回描述此字段的字符串,包括其泛型类型。格式是字段的访问修饰符(如果有),后跟泛型字段类型,后跟空格,后跟声明字段的类的完全限定名,后跟句点,后跟字段名称 修饰符按照Java语言规范指定的规范顺序放置。首先是public、protected或private,然后是按以下顺序排列的其他修饰符:static、final、transient、volatile 鉴于,对于toString而言,它表示: 返回描述此字段的字符串。格式是字段的访问修饰符(如果有),后跟字段类型,后跟空格,后跟声明字段的类的完全限定名,后跟句点,后跟字段名称
正如name和javadoc透露的:这与泛型有关。因此,您可能希望将测试代码更改为,很好地使用泛型。尝试声明一个类似列表的泛型字段,并比较其差异。它只是概括了类型擦除是一个boo-boo的事实。它在@Andy Turner有效,谢谢。我从没想过。
package com.sample;
import java.lang.reflect.Field;
class Demo {
int i;
}
public class DifferenceGenericStringAndToString {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Class c = Demo.class;
Field[] fields = c.getDeclaredFields();
for(Field field : fields) {
System.out.println(field.toGenericString());
System.out.println(field.toString());
}
}
}