Java 如何使泛型类型可序列化?

Java 如何使泛型类型可序列化?,java,generics,serialization,Java,Generics,Serialization,SonarQube给出了以下错误: 使“类型”暂时或可序列化 在下列班级: @XmlRootElement public class InsuredAmount<T extends IAType> implements Serializable { private static final long serialVersionUID = 1L; private T type; } 使用各种枚举实现,如: public enum OneIAType impleme

SonarQube给出了以下错误:

使“类型”暂时或可序列化

在下列班级:

@XmlRootElement
public class InsuredAmount<T extends IAType> implements Serializable {

    private static final long serialVersionUID = 1L;

    private T type;
}
使用各种枚举实现,如:

public enum OneIAType implements IAType, Serializable {

    GENERIC

}
该类用于REST接口,因此它应该是可序列化的

我的问题是: 1.我不认为将类型标记为transient是个好主意,因为我是通过REST接口传输这个类的。如果我将此类型标记为瞬态,是否会导致问题? 2.如何使类型可序列化

  • 如果我将此类型标记为瞬态,是否会导致问题 取决于反序列化实例后是否需要字段中的值。如果您这样做,您可以将其标记为“瞬态”,但您需要一些其他方式来传输必要的信息,以便在远端重建
    类型
    的值

  • 如何使类型可序列化

  • 将类型变量声明为:

    
    

    编辑:SonarQube似乎未将此建议识别为可序列化类型

    它在问题中说接口的实现是枚举;这表明,表达界限的另一种方式是:

    <T extends Enum<T> & IAType>
    
    
    
    请注意,所有枚举都可以隐式序列化,因此
    serializable
    不必显式位于交叉点类型中

    事实证明,这种方法有效,而第一种方法不行:两种类型的引用。(也许这是SonarQube中的一个bug?)

  • 如果我将此类型标记为瞬态,是否会导致问题 取决于反序列化实例后是否需要字段中的值。如果您这样做,您可以将其标记为“瞬态”,但您需要一些其他方式来传输必要的信息,以便在远端重建
    类型
    的值

  • 如何使类型可序列化

  • 将类型变量声明为:

    
    

    编辑:SonarQube似乎未将此建议识别为可序列化类型

    它在问题中说接口的实现是枚举;这表明,表达界限的另一种方式是:

    <T extends Enum<T> & IAType>
    
    
    
    请注意,所有枚举都可以隐式序列化,因此
    serializable
    不必显式位于交叉点类型中


    事实证明,这种方法有效,而第一种方法不行:两种类型的引用。(可能是SonarQube中的错误?

    将类型变量声明为:
    ?将类型变量声明为:
    ?是否可能重复?反序列化后我需要该字段。我尝试将
    &Serializable
    添加到类型中,但sonarQube错误仍然存在。看起来有人问过同样的问题(但还没有回答)。如果您的
    IAType
    实现都是枚举,您可以声明
    ?sonarqube是否认识到这是可序列化的?谢谢!这很有效。如果你修改答案,我会接受的!是,我需要反序列化后的字段。我尝试将
    &Serializable
    添加到类型中,但sonarQube错误仍然存在。看起来有人问过同样的问题(但还没有回答)。如果您的
    IAType
    实现都是枚举,您可以声明
    ?sonarqube是否认识到这是可序列化的?谢谢!这很有效。如果你修改答案,我会接受的!
    <T extends Enum<T> & IAType>