有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    由于Subject{}是一个final{}您将无法扩展它。这就是final关键字的用途。我看到的唯一方法是包装类及其方法。您将无法在需要最终类的地方使用包装器,但您可以实现最终类上的任何接口

    例:

    final class Foo {
        public String getSomething() {
            //
        }
    }
    
    class Bar {
        Foo foo;
    
        public Bar() {
            foo = new Foo();
        }
    
        public String getSomething() {
            foo.getSomething();
        }
    
        public String doSomethingElse() {
            //
        }
    }
    

    我不确定这对你的场景有帮助