0

一个抽象类被声明为

 myClass<E extends Number, D extends Number>

子类是

 final mySubClass<Double,Integer>
 final myOtherSubclass<Double,Double>

想象一下,有一个子类没有第一种类型的参数化过程,我的意思是,类型将被忽略。有没有办法将它设置为 Void、Null 或其他什么?

final mySubClassThatDontUseFirstType<Void,Integer>

例如,如果它内部有一个内部 List<E>,则该列表将是 List,因为它永远不会被使用。

4

2 回答 2

1

我认为问题是 Void 不扩展 Object,因为如果不是如果我认为它有效

当然,类java.lang.Void扩展Object,就像任何其他 Java 类扩展一样Object

请注意,Void与 不一样voidVoid大写V字母有点像原始类型(int-> Integerlong->Long等)的包装类。

请注意,编译器会Void像对待任何其他类一样对待。这意味着如果你有一个返回的方法Void,它必须返回一个值;例如,该方法必须以return null;. 它不像void,编译器将其理解为“不返回任何内容”。

于 2012-07-24T11:54:36.410 回答
1

有没有办法将它设置为 Void、Null 或其他什么?

不,不是。无论您选择什么,它都必须是Number(这只是 Java 语言的要求)的子类型。

你可以做的是创建一个不可实例化的类VoidNumber

class VoidNumber extends Number {

    // Private constructor
    private VoidNumber() {
    }

    ...
}

并用它来记录它没有被使用的事实。

于 2012-07-24T11:55:01.187 回答