我有这样的代码
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/