Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回从类型扩展的泛型列表时发生编译错误_Java_Generics - Fatal编程技术网

Java 返回从类型扩展的泛型列表时发生编译错误

Java 返回从类型扩展的泛型列表时发生编译错误,java,generics,Java,Generics,Im实现了一个访问主数据存储库的通用类型,并且应该能够返回通用主数据类型的子类型,实现的类型表示更广泛的主数据类型 public abstract class TypedMasterData implements Comparable<TypedMasterData> { ..... } 我有一个适配器,用于抽象访问主数据repo,并应返回缩小的类型 public class DefaultMasterDataRespositoryAdapter implements Maste

Im实现了一个访问主数据存储库的通用类型,并且应该能够返回通用主数据类型的子类型,实现的类型表示更广泛的主数据类型

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工作了一年,但我自己有时仍在与它们作斗争