有谁能帮帮忙 告诉我怎么理解
看这个程序:
import java.util.*
public class FilledListMake(T t,int n)
{
  List<T> create(T t,int n)
  { 
    List<T> result = new ArrayList<T>;
    for(int i = 0;i<n;i++)
    { 
      result.add(t);
    }
    return result; 
  } 
  public static void main(String[]args)
  { 
    FilledListMake<String> stringMaker = new FilledListMake<String>;
    List<String> list = stringMaker.create("Helllo",4);
    System.out.println(list);
  } 书上是这样说的 即使编译器无法知道有关create()中T的任何信息 但是它仍旧可以在编译期确保你放置到result中的对象具有T类型 使其适合ArrayList<T> 因此 即使“擦除”在方法或类内部移除了有关实际类型的信息 编译器仍旧可以确保在方或类中使用的类型的内部一致性     因为擦除在方法体中移除了类型信息 所以在运行时的问题就是“边界”:即对象进入和离开方法的地点 这些正式编译器在编译期执行类型检查并插入转型代码的地点 
其中的“擦除” 和 “边界”该怎么理解呢
书上还说了一句:边界就是发生动作的地方

解决方案 »

  1.   

    这是 “think in java 15.7.4 边界处的动作”  
    的内容
      

  2.   

    public class FilledListMake(T t,int n) 
    有这种声明类的格式吗??什么时候类名后面可以带参数了?
      

  3.   

    可能是楼主写错了~~应该是public class FilledListMake<T t,int n>“擦除” 和 “边界”脑海里没有什么理解。呵呵~~~ 学习
      

  4.   

    public class FilledListMake <T t,int n> 
    不是 public class FilledListMake(T t,int n)  这是泛型的一贯写法。
      

  5.   

    建议你去JAVA入门到精通里仔细研究研究范型这一章
      

  6.   

    你这个例子不好
    public class Animal{
    }
    public class Cat extends Animal {
    }// class 定义错误,编译估计不通过的。int i,不能出现在范性里
    //该为public class FilledListMake  <T t>//接下来你的FilledListMake 类中的main方法我改一下。
    public static void main(String[]args) 
      {  
        FilledListMake <Animal>  stringMaker = new FilledListMake <Animal> ; 
        // 这里由于方法体范性参数是Animal,所以方法内部把Cat转化为Animal,Cat对象向上转型,无法直接引用Cat自由的方法和属性,称为擦除
        List <Animal>  list = stringMaker.create(new Cat(),4);
        
        // 这里由于方法的返回值戴上了Cat,也就是List <Cat>,Java内部有一个处理,可以自动转化为返回值的范性类型。这里就是边界,也就是发生动作的地方。所以thinking in java后面有一张专门讲了如何写一个共通函数,虽然作者说没有少写几行代码,实际中也没有什么意义。但是对理解边界非常有帮助。这里的边界和?super Class ? extends Class 有相似之处。
        List <Cat>  list = stringMaker.create(new Cat(),4); 
        System.out.println(list); 
      }  
      

  7.   

    thinking in java 要连起来看,后面的东西跟前面的概念有直接关系。
    我人现在不再中国,不能给你指出来是在那一页,形状跟我的例子应该是差不多的。就在范性那章的后半部分。加油把,lz