Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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_Inheritance - Fatal编程技术网

Java 使泛型类的内部类扩展为可丢弃的

Java 使泛型类的内部类扩展为可丢弃的,java,generics,inheritance,Java,Generics,Inheritance,可能重复: 我试图在泛型类中创建一个常规运行时异常,如下所示: public class SomeGenericClass<SomeType> { public class SomeInternalException extends RuntimeException { [...] } [...] } 公共类SomeGenericClass{ 公共类SomeInternalException扩展了RuntimeException{ [.

可能重复:

我试图在泛型类中创建一个常规运行时异常,如下所示:

public class SomeGenericClass<SomeType> {

    public class SomeInternalException extends RuntimeException {
        [...]
    }

    [...]
}
公共类SomeGenericClass{
公共类SomeInternalException扩展了RuntimeException{
[...]
}
[...]
}
这段代码给了我一个关于
RuntimeException
的错误,它说
泛型类SomeGenericClass.SomeInternalException可能不是java.lang.Throwable的子类

这个运行时异常与我的类是泛型的有什么关系。而且,非静态内部类通过其外部类的类型参数有效地参数化(请参见)。例如,在您的示例中,innerclass的实例具有以下类型:表单
SomeGenericClass.SomeInternalException
。因此,Java不允许泛型类的静态内部类扩展Throwable

解决方法是将
SomeInternalException
设置为静态内部类。这是因为如果innerclass是
静态的
它的类型将不是泛型的,即
SomeGenericClass.SomeInternalException

public class SomeGenericClass<SomeType> {

    public static class SomeInternalException extends RuntimeException {
        [...]
    }

    [...]
}
公共类SomeGenericClass{
公共静态类SomeInternalException扩展了RuntimeException{
[...]
}
[...]
}

你能将嵌套类设为静态类吗?我想说的是不要以重复的形式关闭,因为这里有两块拼图,而那篇文章只解决了其中一块。A.R.S。是的,您应该说泛型类中的非静态内部类本身被认为是泛型的。