Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以具体类型作为参数的Java类_Java_Generics - Fatal编程技术网

以具体类型作为参数的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
被泛型类型参数隐藏。