以具体类型作为参数的Java类
将具有“具体”类型的类声明为泛型有什么意义吗 如果是,有什么用 如果没有,编译器允许它的具体原因是什么 守则:以具体类型作为参数的Java类,java,generics,Java,Generics,将具有“具体”类型的类声明为泛型有什么意义吗 如果是,有什么用 如果没有,编译器允许它的具体原因是什么 守则: public class SomeClass<Integer> { //... public static void main (String a[]) { // SomeClass <> iSome = new SomeClass<>(); // SomeClass <Integer&g
public class SomeClass<Integer> {
//...
public static void main (String a[]) {
// SomeClass <> iSome = new SomeClass<>();
// SomeClass <Integer> jSome = new SomeClass<>();
SomeClass <Double> kSome = new SomeClass<>();
// ...
}
}
公共类SomeClass{
//...
公共静态void main(字符串a[]{
//SomeClass iSome=新的SomeClass();
//SomeClass jSome=新的SomeClass();
SomeClass kSome=新的SomeClass();
// ...
}
}
运行正常,并且在取消声明iSome
和jSome
的行的注释时出现编译器错误
我试图在“破译”泛型的过程中把这些东西放在一起
提前谢谢 不是你想的那样。您正在创建一个名为
Integer
的泛型类型参数,该参数在类定义中隐藏java.lang.Integer
在不改变意义的情况下,您调用的Integer
参数也可以是T
AFIK您可以省略泛型,仅在Java7中,编译器会自动添加泛型,但它不会在运行时存储。因此必须在左手定义中定义泛型,唯一的例外是使用问号作为通配符
// here is the generic missing the compiler cannot guess it:
SomeClass<> iSome = new SomeClass<>();
// here does the compiler know that you want a Double
SomeClass<Double> jSome = new SomeClass<>();
// this will also work
SomeClass<?> kSome = new SomeClass<Boolean>();
//以下是缺少的泛型,编译器无法猜测:
SomeClass iSome=新的SomeClass();
//在这里,编译器是否知道您需要一个Double
SomeClass jSome=新的SomeClass();
//这也会起作用
SomeClass kSome=新的SomeClass();
所以这里没有保留“整数”——JVM没有检查它是否是java.lang中的一个类,公共类SomeClass是否与公共类SomeClass(?)@Roam是的,没错。名称Integer
被泛型类型参数隐藏。