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。是的,您应该说泛型类中的非静态内部类本身被认为是泛型的。