java - 奇怪的未经检查的转换警告

标签 java interface unchecked

我在代码中使用了策略模式,这是一个简短的片段:

public interface FindingStrategy<T> {
    Callable<T> setAction();
}

class FindSomething implements BindingActionStrategy {

...

    @Override
    public Callable<SomeObject> setAction() {
        return new Callable<SomeObject>() {
            @Override
            public SomeObject call() throws ... {
                return (SomeObject)binding.findSomething(somethingsId);
            }
        };
    }

...

}

我在其他地方做的事情:

 Callable<SomeObject> ts = (Callable<SomeObject>) strategy.setAction();

编译器信号:

unchecked conversion warning 
required: Callable<SomeObject>
found:    Callable

奇怪的是,如果我这样做,就没有警告:

Callable<SomeObject> ts = new Callable<SomeObject>() {
            @Override
            public SomeObject call() throws ... {
                return (SomeObject)binding.findSomething(somethingsId);
            }
        };

我该如何解决这个问题?我尝试了很多改变,但仍然收到警告。请帮忙!

最佳答案

确保strategy变量也具有泛型类型信息。

以下情况将导致此警告:

FindingStrategy strategy;

虽然这应该没问题:

FindingStrategy<SomeObject> strategy;

那么你甚至不需要 Actor 阵容。

关于java - 奇怪的未经检查的转换警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14069955/

相关文章:

java - 未经检查或不安全的操作作业

java - 我可以创建一个通用的 Web 服务/调度方法来响应所有使用 JAX-WS 的请求吗?

java - 在 Java 中,我应该为常量属性使用 getter 还是接口(interface)标记?

java - 将类放入哈希表中

Java 通用观察者模式实现未经检查的调用作为原始类型

java - 创建 HashMap 数组,同时指定 HashMap<String, Integer>

java - Android:如何知道何时从fragment返回

java - 通过应用程序在手机上创建背景

java - SWT JFace如何在moveBelow()后重绘

C# .NET 将 InterfaceImplementingClass 对象的集合传递给采用接口(interface)对象集合的例程