将SwingWorker的泛型类型设置为void?

Sur*_*ran 7 java generics swing void swingworker

可能重复:
java.lang.Void和void有什么区别?

我想创建一个SwingWorker具有最终和中间结果类型的具体类void.我写了以下代码:

class AnswerWorker extends SwingWorker<void, void> {
    protected void doInBackGround() {
        System.out.println("what is your problem!!");
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

Multiple markers at this line-
    Syntax error on token "void", Dimensions expected after this token.
    Syntax error on token "void", Dimensions expected after this token.
Run Code Online (Sandbox Code Playgroud)

然而,当我将代码更改voidVoid(即小v到大写V)时,它工作正常,尽管我仍然被迫return null;doInBackground()方法结束时.

为什么是这样?我知道Void是一个java.lang包中的类,但是文档没有说太多关于它的内容(至少我不能遵循它:p)

Thanx提前!!

Zhe*_*dar 12

class AnswerWorker extends SwingWorker<Void, Void>
应该做的伎俩.这是因为泛型总是需要对象作为参数.他们也不能采取原始.Void就像一个摆脱这个问题的包装器.

现在你仍然需要返回一些东西的原因:
正如文档所说,Void仍然是一个类.所以你还需要返回一个对象.由于它是不可实现的,因此只有返回的可能性null.所以Void不完全像void关键字.仍然需要返回对象的引用(在这种情况下为null-reference).

有一件重要的事情:泛型强迫你使用对象. void和原始类型一样,不是一个对象.这是Java的纯粹oop性质;)