无法子类化最终类的主题接口

时间:2018-12-24 19:08:49

标签: java

import javax.security.auth.Subject;

abstract class Department extends Subject{
    String name;


}

我有这段代码。不幸的是,这引发了以下错误:The type Department cannot subclass the final class Subject

我正在阅读文档https://docs.oracle.com/javase/7/docs/api/javax/security/auth/Subject.html,但是如何使用它(一个特定的用例)并没有太多内容。

有人知道如何在抽象类上使用Subject(必须由抽象类扩展)吗?

编辑:enter image description here

编辑2:使用工具时出错:

The type Subject cannot be a superinterface of Department; a superinterface must be an interface

1 个答案:

答案 0 :(得分:1)

由于Subject classfinal class,因此您将无法对其进行扩展。这就是final关键字的目的。我看到的唯一方法是包装类及其方法。您将无法在需要最终类的地方使用包装器,但可以实现最终类上的任何接口。

例如:

final class Foo {
    public String getSomething() {
        //
    }
}

class Bar {
    Foo foo;

    public Bar() {
        foo = new Foo();
    }

    public String getSomething() {
        foo.getSomething();
    }

    public String doSomethingElse() {
        //
    }
}

不确定是否会对您的情况有所帮助。