我应该总是使用泛型吗?

时间:2012-07-02 09:55:33

标签: java generics testing coding-style junit

我创建了一个单元测试:

new Callable() {
@Override
public Object call() throws
         .....

我在Eclipse中收到警告:

Callable is a raw type. References to generic type Callable<V> 
should be parameterized

我应该写代码如下:

new Callable<Object>()  

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

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:7)

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

new Callable<Void>() {

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

}

答案 2 :(得分:3)

Runnable是Callable&lt;的良好替代品。 Void&gt;。