package com.foo.restapi.client.olingo;
import com.foo.restapi.client.FooODataEntity;
import com.foo.restapi.client.exceptions.FooRuntimeException;
import org.apache.olingo.commons.api.domain.v4.ODataAnnotation;
import org.apache.olingo.commons.api.domain.v4.ODataEntity;
import org.apache.olingo.commons.api.domain.v4.ODataEntitySet;
import org.apache.olingo.commons.core.domain.AbstractODataEntitySet;
import java.lang.reflect.Constructor;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
public class FooEntitySet<E extends FooODataEntity>
extends AbstractODataEntitySet implements ODataEntitySet {
private final List<E> entities = new ArrayList<E>();
public FooEntitySet() {
super();
}
@Override
public List<ODataEntity> getEntities() {
// compile error
// Incompatible types. Found: 'java.util.List<E>',
// required: 'java.util.List<org.apache.olingo.commons.api.domain.v4.ODataEntity>'
return entities;
}
}
FoodataEntity:
package com.foo.restapi.client;
public class FooODataEntity extends AbstractODataPayload
implements ODataEntity, ODataSingleton {
// code not shown
}
你不能这么做是有原因的。虽然FoodataEntity
是OdataEntity
,但列表
不是列表
。
让我们更详细地介绍一下:
假设我有这门课:
public class BaconODataEntity implements ODataEntity {
// Pretend I implement all the ODataEntity things
}
我可以将baconodataentity
的实例添加到列表
和列表
中...但不能放入列表
中。
因此,简单地让您将列表
强制转换为列表
将破坏泛型应该引入的类型安全性,因为我可以向泛型添加baconodataentity
我得到以下编译错误: 当我编译(在Eclipse Juno中使用JDK 1.7.0)以下代码时: null 这样我就可以测试我所有的排序实现并测试它们。我想将结果与Java的排序实现进行比较,所以我也在编写这个接口的实现,它在内部只调用Java的排序方法。这就是我面对问题的地方。
应该如何声明“GenericBo Bo”实例?正确的代码是什么?
问题内容: 我在写一些代码,遇到编译错误。这就是我所拥有的: 我以为使用继承时没有正确声明泛型,所以我检查了Oracle的教程,他们在其中编写 上面的声明使用相同的泛型类型,这是我在示例中要完成的工作。似乎假设from 与from 有所不同。否则,它应该能够 将 两者 合并并看到相同的类型。如何正确实现我要实现的目标? ( 即,某物的常量是某物的值,这是同一物的表达 ) 问题答案: 您的变量定义为
Groovy中的简单泛型类 Groovy版本: 这是我做的一个简单的测试用例,当一个更复杂的类不能编译时,错误是“不能将类型T的值赋给类型double[]的变量”。
get1方法工作正常,但get2存在编译错误: > 类型A.B的方法get2(集合)必须重写或实现超类型方法 只有带有泛型的参数才会出现此错误<代码>get3编译,但当然有一个警告: > 显然还有其他方法可以解决这个问题,但在我的理解中,这应该是一个法律优先事项,我的问题更多的是为什么会有这个编译错误。提前谢谢! 编辑: 对不起,我的例子不够清楚。因此,这里有一个新的答案来回应你的一些观点。 与上
问题内容: 我在编写一些Java代码时遇到了编译失败,我将其简化为以下测试用例: 上面的代码无法使用JDK 1.7.0_45 进行编译: 但是,使用JDK 1.8.0_05编译时不会出现任何错误。 这是Java 7实现中的错误吗?还是对Java 8中的Java语言规范进行了增强以开始允许这样做-如果是这样,有什么变化? 问题答案: JLS SE 8在(§15.2)中说: 当某些表达式出现在某些上下