- Object范围非常广,而T从一开始就会限定这个类型(包括它可以限定类型为Object)。
- Object由于它是所有类的父类,所以会强制类型转换,而T从一开始在编码时(注意是在写代码时)就限定了某种具体类型,所以它不用强制类型转换。(之所以要强调在写代码时是因为泛型在虚拟机中会被JVM擦除掉它的具体类型信息,这点可参考泛型,在这里不做引申)。
请注意加红部分,不引用泛型的话在取出链表的时候需要强转。@Test public void test123() { System.out.println(object_to_json("hello")); System.out.println(object_to_json2("hello")); } @Test public void test2(){ String a1 =test22222("String"); String a2 =(String) test1111("String"); int a3 = test22222(123); int a4 =(int) test1111(123); } public static <T> T test22222(T t){ List<T> list_object2 = new ArrayList<T>(); list_object2.add(t); return t; } public static Object test1111(Object object){ List<Object> list_object = new ArrayList<Object>(); list_object.add("hello"); list_object.add(123); for(int i=0;i<list_object.size();i++){ String abc = (String) list_object.get(0); } return object; }
泛型T和Object的区别
最新推荐文章于 2024-05-08 23:28:20 发布