相关疑难解决方法(0)

Java泛型类型擦除方法参数

我从Joshua Bloch给出的谷歌I/O益智游戏中得到了这个.这是代码

 public class Glommer<T> {
      String glom(Collection<?> obj){
         String result = "";
         for(Object o : obj){
              result += o;
         }
         return result;
      }

      int glom(List<Integer> ints){
           int result = 0;
           for(int i : ints){
                result += i;
           }
           return result;
       }

      public static void main(String args[]){
           List<String> strings = Arrays.asList("1", "2", "3");
           System.out.println(new Glommer().glom(strings));
      }
Run Code Online (Sandbox Code Playgroud)

这个main方法抛出一个异常,因为它new Glommer是一个原始类型,因此所有的泛型都Glommer被删除了,所以最终调用int glom(List<Integer> ints)而不是String glom(Collection<?> obj).

我的问题是,即使我打电话glom()new Glommer<Integer>().glom(strings)不是应该把它调用的int glom(List<Integer> ints)方法,因为由于类型擦除,这种方法是有效的 …

java generics types

9
推荐指数
1
解决办法
614
查看次数

标签 统计

generics ×1

java ×1

types ×1