java - 避免在 Java 中匿名扩展类

标签 java

在 Java 中,是否可以阻止类被匿名扩展?

例如

public class A () {
    public void hello() {}
}

我想允许命名类扩展:

public class B extends A {
}

但不是匿名的:

A a = new A() {
    public void hello() {
    }
}

这是为了序列化目的。

最佳答案

是的,有一种方法可以通过使用运行时异常来实现:

class MyData implements Serializable {

    public MyData() {
        if (getClass().isAnonymousClass()) {
            throw new IllegalStateException("Anonymous subclasses are not serializable.");
        }
    }
}

从技术上讲,匿名类是可序列化的,但看看 this 可能是个好主意在尝试接受之前。

关于java - 避免在 Java 中匿名扩展类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33902080/

相关文章:

JAVA写入Access数据库并检索和索引

java - 如何使用 JCA/JCE 和 HSM 派生 key

java - 如何从未排序的 x/y 坐标数组中查找直线

java - JVM 中的 Char 值表示

java - 从 super 对象列表中向下转换替代方案

java - 在不使用单例的情况下将类限制为一个实例?

java - 使用线程调用不同的方法

java - NSEE 是什么意思?这段代码中发生了什么?

java - 添加到已设置/填充的数组

java - 一个带开关盒的简单计算器