tom*_*136 1 java serialization compiler-errors serializable
为什么这样:
package com.example;
import com.example.Foo.Bar.Baz;
import java.io.Serializable; // I did import Serializable...
public class Foo implements Serializable {
public final Bar bar;
public Foo(Bar bar) {
this.bar = bar == null ? new Bar(Baz.ONE) : bar;
}
public static class Bar implements Serializable { // this is line 15, where the compiler error is pointing
public enum Baz {
ONE
}
public final Baz baz;
public Bar(Baz baz) {
this.baz = baz;
}
}
}
Run Code Online (Sandbox Code Playgroud)
给我这个:
[ERROR] <path to file>/Foo.java:[15,44] cannot find symbol
[ERROR] symbol: class Serializable
[ERROR] location: class com.example.Foo
Run Code Online (Sandbox Code Playgroud)
如果我将Serializable接口替换为其他类似的东西:
public interface MyMarkerInterface {}
Run Code Online (Sandbox Code Playgroud)
然后代码编译.(甚至Cloneable有效!)
这是怎么回事?通过静态分析,intelliJ没有发现任何错误.
不要尝试导入内部类.这导致您的编译器错误
// import com.example.Foo.Bar.Baz;
import java.io.Serializable;
public class Foo implements Serializable {
public final Bar bar;
public Foo(Bar bar) {
this.bar = bar == null ? new Bar(Bar.Baz.ONE) : bar;
}
public static class Bar implements Serializable {
public enum Baz {
ONE
}
public final Baz baz;
public Bar(Baz baz) {
this.baz = baz;
}
}
}
Run Code Online (Sandbox Code Playgroud)