List<String> l1 = new ArrayList<String>();
List<Integer> l2 = new ArrayList<Integer>();
System.out.println(l1.getClass() == l2.getClass());
为什么是true?泛型真是很难理解

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【jingulang】截止到2008-07-11 18:06:21的历史汇总数据(不包括此帖):
    发帖的总数量:21                       发帖的总分数:510                      每贴平均分数:24                       
    回帖的总数量:298                      得分贴总数量:106                      回帖的得分率:35%                      
    结贴的总数量:19                       结贴的总分数:450                      
    无满意结贴数:2                        无满意结贴分:40                       
    未结的帖子数:2                        未结的总分数:60                       
    结贴的百分比:90.48 %               结分的百分比:88.24 %                  
    无满意结贴率:10.53 %               无满意结分率:8.89  %                  
    值得尊敬
      

  2.   

    两个都是java.util.ArrayList的对象,相同不是正确的吗?
      

  3.   

    List l1 = new ArrayList();
    List l2 = new ArrayList();
    System.out.println( l1==l2 );这就为false
      

  4.   

    每个类的成员class是static final的。也就是说每个类的多个对象是共享class成员的,所以用==判断为true
      

  5.   

    l1.getClass() == l2.getClass()为true表示他们是同一个类的,
    l1==l2 为false表示他们不是同一个对象。
    这没有任何问题啊
      

  6.   

    List<String> l1 = new ArrayList<String> ();
    List<Integer> l2 = new ArrayList<Integer> ();
    System.out.println( l1.equals(l2));这个为true
      

  7.   

    看看getClass的说明。
    Returns the runtime class of this Object
    返回调用Object的运行时的对象List <String> l1 = new ArrayList <String>(); 
    List <Integer> l2 = new ArrayList <Integer>(); l1,l2的实际都是ArrayList的对象,所以返回了true
      

  8.   

    你这个实际上就和下面的一样
    String a = new String("");
    String b = new String("");
    System.out.println(a == b);
      

  9.   

    带泛型的集合  相互比较的化  貌似只能用equals()  不让用==List<String> l1 = new ArrayList<String> ();
    List<Integer> l2 = new ArrayList<Integer> ();
    System.out.println( l1.equals(l2) );这个是true
      

  10.   

     List<String> l1 = new ArrayList<String>();
     List<Integer> l2 = new ArrayList<Integer>();
    System.out.println(l1.getClass() == l2.getClass());
    System.out.println(l1.getClass().equals(l2.getClass()));
    都是true
    说明11和l2是存在相同的class对象。
    这是在运行时得到的信息。带泛型的集合  相互比较的化  貌似只能用equals()  不让用== 
    这个是在编译的时候就判断出来,他们保存的数据类型不同。
    在集合众使用范型一个很重要的作用就是能在编译阶段发现错误。