你能在运行时使一个对象可序列化吗?

Cha*_*ook 8 java serialization runtime

就像标题所说,有没有办法检查一个对象是否可序列化,如果没有,那么在运行时这样做?

Boz*_*zho 11

简短的回答 - 没有.

更长的答案 - 是的,使用字节码操作,例如使用asm.但你应该考虑是否需要这样做.序列化是一个严重的问题(Effective Java有一整章关于序列化)

顺便说一句,有二进制序列化的替代品,不需要实现对象Serializble(正如Jacob在评论中所指出的):

  • XML - java.beans.XMLEncoder.encode(..)是xml的版本ObjectOutputStream
  • JSON - 像Jacskon,Gson这样的框架让你用一行序列化一个对象.