Java 返回从类型扩展的泛型列表时发生编译错误
Im实现了一个访问主数据存储库的通用类型,并且应该能够返回通用主数据类型的子类型,实现的类型表示更广泛的主数据类型Java 返回从类型扩展的泛型列表时发生编译错误,java,generics,Java,Generics,Im实现了一个访问主数据存储库的通用类型,并且应该能够返回通用主数据类型的子类型,实现的类型表示更广泛的主数据类型 public abstract class TypedMasterData implements Comparable<TypedMasterData> { ..... } 我有一个适配器,用于抽象访问主数据repo,并应返回缩小的类型 public class DefaultMasterDataRespositoryAdapter implements Maste
public abstract class TypedMasterData implements Comparable<TypedMasterData> {
.....
}
我有一个适配器,用于抽象访问主数据repo,并应返回缩小的类型
public class DefaultMasterDataRespositoryAdapter implements MasterDataRespositoryAdapter {
//some code just to check for implementaion validity,
@Override
public <T extends TypedMasterData> List<T> getAllValuesOfType(T t) {
return Arrays.asList(new CompanyName[] {new CompanyName(1, "CompanyName", "ADLC", "ADLC", null)});
}
....
}
公共类DefaultMasterDataRespositoryAdapter实现MasterDataRespositoryAdapter{
//一些代码只是为了检查实现的有效性,
@凌驾
公共列表GetAllValueSoftType(T){
返回Arrays.asList(newcompanyname[]{newcompanyname(1,“CompanyName”,“ADLC”,“ADLC”,null)});
}
....
}
但是方法getAllValuesOfType
给出了如下编译错误
您在这里对泛型感到困惑。我认为
MasterDataRespositoryAdapter.getAllValuesOfType
的更好实现是:
public <T extends TypedMasterData> List<TypedMasterData> getAllValuesOfType(T t) ;
public List getAllValuesOfType(T);
虽然我们不知道参数t
在这里做什么,但是您可以去掉它
您可以将
视为一个具体的类,它至少属于类型MasterData
,但在这里,您试图将一些公司名称
放入“具体类”的列表中。这就像试图将一些整数
放入列表
。Integer
和Double
都继承了Number
,但无论如何都无法编译。解决方法是将整数
和双精度
放入列表
一般的问题很难处理。尽管我在Java方面有多年的经验,但我自己有时仍在与它们作斗争。您在这里对泛型感到困惑。我认为MasterDataRespositoryAdapter.getAllValuesOfType
的更好实现是:
public <T extends TypedMasterData> List<TypedMasterData> getAllValuesOfType(T t) ;
public List getAllValuesOfType(T);
虽然我们不知道参数t
在这里做什么,但是您可以去掉它
您可以将
视为一个具体的类,它至少属于类型MasterData
,但在这里,您试图将一些公司名称
放入“具体类”的列表中。这就像试图将一些整数
放入列表
。Integer
和Double
都继承了Number
,但无论如何都无法编译。解决方法是将整数
和双精度
放入列表
一般的问题很难处理。尽管我在Java工作了一年,但我自己有时仍在与它们作斗争