Caso 1:
public class DistributeData implements SerializedName{
public class CodeDetail {
...}
}
CodeDetail não será serializado.
Caso dois:
public class DistributeData implements SerializedName{
public class CodeDetail implements SerializedName{
...}
}
Relate NotSerializableException e verifique se há erros.Embora a classe CodeDetail implemente a interface Serializable, CodeDetail é definido na forma de uma classe interna no projeto.
E classes internas não podem ser serializadas!
Para classes internas, somente classes internas estáticas podem ser serializadas. deveria estar:
public class DistributeData implements SerializedName{
public static class CodeDetail implements SerializedName{
...}
}
Portanto, tente usar menos classes internas e limite demais para evitar problemas desnecessários.
Caso três:
public class DistributeData {
public class CodeDetail implements SerializedName{
...}
}
Uma exceção é relatada durante a operação: Objetos que não implementam a interface de serialização não podem ser serializados.
Todas as classes internas, classes internas locais e classes internas anônimas podem acessar diretamente as variáveis de instância e os métodos da classe de encapsulamento externa. Considerando que as classes aninhadas estáticas não podem.
Instâncias de classes internas, classes internas locais e classes internas anônimas mantêm uma referência implícita a uma instância de uma classe de encapsulamento externa, e a serialização de objeto Java requer que todos os membros do objeto no objeto implementem a interface de serialização. Portanto, se apenas a classe interna implementar a serialização, mas a classe de encapsulamento externa não implementar a interface de serialização, uma exceção será relatada quando a classe interna for serializada.
Explicação do princípio:
As classes internas são um tipo de classe aninhada e existem quatro tipos de classes aninhadas:
classe aninhada estática classe aninhada estática
classe interna classe interna (não estática)
classe local classe local (definida dentro do método)
classe anônima classe anônima
O comportamento das classes aninhadas estáticas é mais próximo das classes comuns e as outras três são classes internas reais. A diferença está no escopo.