相关疑难解决方法(0)

什么是原始类型,为什么我们不应该使用它?

问题:

  • 什么是Java中的原始类型,为什么我经常听说不应该在新代码中使用它们?
  • 如果我们不能使用原始类型,它有什么替代方案,它是如何更好的?

java generics raw-types

617
推荐指数
13
解决办法
20万
查看次数

List,List <?>,List <T>,List <E>和List <Object>之间的区别

之间有什么区别List,List<?>,List<T>,List<E>,和List<Object>

现在我不要盲目地问这个问题,所以请不要关闭这个帖子.我先介绍一下基本代码:

public static void test(List<?> list){
    System.out.println(list);   // Works
}
Run Code Online (Sandbox Code Playgroud)

我明白:

1 List.:是原始类型,因此不是typesafe.它只会在强制转换时生成运行时错误.当演员表不好时我们想要编译时错误.不建议使用.

2 . List<?>:是一个无界的通配符.但不确定这是为了什么?所以如果我改变List<?>方法

public static void test(List<?> list){
    list.add(new Long(2));     // Error
    list.add("2");             // Error
    System.out.println(list);
}
Run Code Online (Sandbox Code Playgroud)

它仍然很好.如果您能解释一下这种用法,我将不胜感激.

编辑:如果我这样做:

public static void test(List<T> list){   // T cannot be resolved
    System.out.println(list);
}
Run Code Online (Sandbox Code Playgroud)

但如果我改成List<?>这个:

public <T> T[] toArray(T[] a){
    return a;   
}
Run Code Online (Sandbox Code Playgroud)

3 . <T>:

public static …
Run Code Online (Sandbox Code Playgroud)

java generics

188
推荐指数
8
解决办法
15万
查看次数

无界通配符类型List <?>和原始类型List之间有什么区别?

你能帮我理解无界通配符类型列表原始类型列表之间的区别吗?

List<?> b;    // unbounded wildcard type
List a;       // raw type
Run Code Online (Sandbox Code Playgroud)


除此之外,任何人都可以帮助我理解什么是有界类型参数列表

List<E extends Number> c;
Run Code Online (Sandbox Code Playgroud)

java generics list

23
推荐指数
3
解决办法
5990
查看次数

标签 统计

generics ×3

java ×3

list ×1

raw-types ×1