Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止Java类被实例化和继承_Java_Inheritance_Instance - Fatal编程技术网

防止Java类被实例化和继承

防止Java类被实例化和继承,java,inheritance,instance,Java,Inheritance,Instance,我被要求修改一个简单的类,这样它就不能被实例化和继承。 我对如何使用抽象表示未被实例化和final表示未被继承感到困惑 我该怎么写这样的课呢 提前感谢。一门课不能既是最终的,又是抽象的。您可以通过隐藏构造函数并引发异常来防止通过反射实例化来防止实例化 看起来是这样的: final class MyClass { private MyClass() { throw new IllegalStateException("Cannot be instantiated"); //

我被要求修改一个简单的类,这样它就不能被实例化和继承。 我对如何使用抽象表示未被实例化和final表示未被继承感到困惑

我该怎么写这样的课呢


提前感谢。

一门课不能既是最终的,又是抽象的。您可以通过隐藏构造函数并引发异常来防止通过反射实例化来防止实例化

看起来是这样的:

final class MyClass {
    private MyClass() {
        throw new IllegalStateException("Cannot be instantiated"); //some exception
    }
}

因此,您必须使类成为最终类,并添加一个私有构造函数: 看看这个例子:

final class  uninstantiable {
    private uninstantiable() {
    }
}
因此,现在无论何时尝试实例化新对象,它都会出错
classname
packagename
中具有私有访问权限

final class  uninstantiable {
    private uninstantiable() {
    }
}