java - 编译java代码时缺少参数

标签 java

我有这样的代码

private List<xyzClass> fieldName;

public List<xyzClass> getFieldName(){
    return fieldName;
}

public void setFieldName(List<xyzClass> abc){
    this.fieldName= abc;
}

但是当编译为java字节码时,参数丢失了 如下:

private List fieldName;

public List getFieldName(){
    return fieldName;
}

public void setFieldName(List abc){
    this.fieldName= abc;
}

这会导致 SOAP 出现问题,因为无法类型转换为 xyzClass 异常。

从 Eclipse 我看到创建的类文件是好的 但是当我尝试命令行 javac 或 maven 时,类文件缺少这些参数。

最佳答案

这是 type erasure 的结果.基本上,java 使用泛型来确认您在编译时没有违反类型约束。然后删除所有泛型并替换为继承层次结构中的最高类。这将默认为 Object但如果你说 <T extends ParentClass> (例如)T泛型将被替换为 ParentClass .

关于java - 编译java代码时缺少参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33917265/

相关文章:

java - 单击某个项目后如何关闭回收者 View 持有者?

Java重写抽象泛型方法

java - 我应该如何在Android问答游戏中创建question_bank?

Java:Collections.sort 对属性不起作用?

java - 发布请求因无效文件路径错误而失败

java - 如何访问顶部 JFrame 下面的所有组件

java - 一个网络应用程序访问具有相同结构的不同数据库

java - Netflow 记录无法获取八位字节 (jnca)

java - 重复值

java - 我们使用 JMS 而不是使用 REST TEMPLATE 来交换信息有什么优势?