我应该总是使用泛型吗?

use*_*818 6 java generics testing junit coding-style

我创建了一个单元测试:

new Callable() {
@Override
public Object call() throws
         .....
Run Code Online (Sandbox Code Playgroud)

我在Eclipse中收到了警告:

Callable is a raw type. References to generic type Callable<V> 
should be parameterized
Run Code Online (Sandbox Code Playgroud)

我应该写代码如下:

new Callable<Object>()  
Run Code Online (Sandbox Code Playgroud)

消除警告,或不?似乎只有junit测试,没有任何意义添加额外的代码...谢谢.

JB *_*zet 8

是的,避免原始类型和使用泛型类型是一种很好的做法.使用Callable<Object>清楚地表明Callable旨在返回任何类型的Object.使用Callable并没有说清楚.

  • 然后将其设为Callable <Void>,因为@MartinK在其答案中显示,这使得Callable不会返回任何内容. (2认同)

Mar*_*inK 7

如果您的操作没有返回值(或者返回没有任何意义).您应该使用java.lang.Void类型参数.

new Callable<Void>() {

  public Void call() throws Exception {
    // do work
    return null; // <-- This statement is required.
  }

}
Run Code Online (Sandbox Code Playgroud)