gpt4 book ai didi

java - 为什么我的通用方法停止工作?

转载 作者:搜寻专家 更新时间:2023-11-01 03:14:52 24 4
gpt4 key购买 nike

在我的项目中,我有一个工厂方法可以加载一个实现接口(interface)的对象。你传入你想要的类并接收它的实例化,就像这样。

public class Factory {
public static <E extends SomeInterface> E load( Class<E> clss ) throws Exception {
return clss.newInstance();
}
}

你可以像这样调用它:

MyObject obj = Factory.load( MyObject.class );

此代码在使用 Java 6u13 的 Eclipse 3.4 中工作得很好,但是今天我收到了一台新笔记本电脑并安装了 Eclipse 3.5 和 java 6u15,现在到处都是类型不匹配。

MyObject obj = Factory.load( MyObject.class );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Type mismatch: cannot convert from SomeInterface to MyObject

在那条线上的 Factory 之前放置一个 cast 可以让它消失并且一切运行良好,但它会让这条线变得不那么干净,而且我以前不需要它,那有什么用呢?

最佳答案

您最近是否向您的工厂类添加了类型参数?原始类型的泛型方法有一个缺陷:

  public class FooFactory<UnrelatedArg> {
public <E> E load(Class<E> c) { ... }
}

FooFactory<?> f; f.load(String.class); // returns String
FooFactory f; f.load(String.class); // returns Object

关于java - 为什么我的通用方法停止工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1254911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com