java泛型的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java泛型的问题相关的知识,希望对你有一定的参考价值。

class Gen<T>

private T o;
public Gen(T a)
this.o=a;
public void showTypeName()

System.out.println("类型是:"+o.getClass().getName());


Dog dog1=new Dog();
Dog dog2=new Dog();
Gen<Dog> gen1=new Gen<Dog>(dog1);
Gen gen2=new Gen(dog2);
gen1.showTypeName();
gen2.showTypeName();

两个都能输出数据类型,有什么区别?
Gen<Dog> gen1=new Gen<Dog>(dog1);
Gen gen2=new Gen(dog2);

这两有什么区别,第二个简单,为什么大家都用第一个。而且第二个系统会提示:
Multiple markers at this line
- Gen is a raw type. References to generic type Gen<T> should be
parameterized
- Type safety: The constructor Gen(Object) belongs to the raw type Gen.
References to generic type Gen<T> should be parameterized
- Line breakpoint:Demo2 [line: 21] - main(String[])
- Gen is a raw type. References to generic type Gen<T> should be
parameterized

参考技术A 如果指定了<Dog> 后面传进去的参数就只能是Dog类型如
Gen<Dog> gen1=new Gen<Dog>(dog1);
但不能传入其他类型,如 Gen<String> gen1=new Gen<String>(new String("test"));

如果没有指定<Dog>则可以传入任何类型如:
Gen gen2=new Gen(dog2);可以
Gen gen2=new Gen(new String("test"));也可以本回答被提问者采纳
参考技术B 使用泛型是规定在类内部的处理时,只用这一个类型,其他的不行。
算是规范一下传进来的参数,只针对一种类型进行处理。
参考技术C 下面的方法有泛型的定义,意味着可以接受多种类型。你在上面里面填了string之后就可以运行,同样你填Integer也可以。也就是方法不知道你要传什么类型进来,他来者不拒。 参考技术D 泛型的主要作用是在编译期 确保了数据的准确性,,避免运行期报错.. 第5个回答  2012-10-09 我认为没区别。你给我十块钱和你快递给我十块钱没啥区别,当然快递费你付。

以上是关于java泛型的问题的主要内容,如果未能解决你的问题,请参考以下文章

java泛型泛型的内部原理:类型擦除以及类型擦除带来的问题

请教一个关于java泛型的问题

java泛型 泛型的内部原理:类型擦除以及类型擦除带来的问题

Java 泛型 Java使用泛型的意义

java中泛型的使用

泛型的泛型的好处