java - 如何访问 "unnamed"类的方法?

标签 java inheritance abstract-class

public class Test {
    public static void main(String[] args) {
        DemoAbstractClass abstractClass = new DemoAbstractClass() {
            private String val;

            @Override
            public void runner() {
                val = "test";
                System.out.println(val);
                this.run();
            }

            public String getVal() {
                return val;
            }
        };

        abstractClass.runner();

        /**
         * I want to access getVal method here
         */
    }
}

abstract class DemoAbstractClass {
    public void run() {
        System.out.println("running");
    }

    public abstract void runner();
}

在这里,我声明了一个抽象类 DemoAbstractClass。我显然可以创建一个扩展此类的新类并将此方法添加到其中。但是,我宁愿在我的场景中不这样做。 有没有其他方法可以访问上面代码中的 getVal 方法??

最佳答案

你不能。您需要从中创建一个适当的(非反常的)类。如果您想限制其范围,请将其设为内部私有(private)类。

或者,您可以使用 StringBuffer 并在方法之间共享对它的引用。然而不是很干净。

相关问题:

关于java - 如何访问 "unnamed"类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11036618/

相关文章:

java - GWT AnnotatedTimeLine 异常 "AnnotatedTimeLine is not a constructor"

javascript - JS中的多态与深度继承

java - 使用 functional-java 将闭包添加到 Java 生产项目有多安全?

java - 存储异常实例并重用它是否安全?

css - 继承了哪些 CSS 属性?

c# - 有没有办法在没有泛型约束的情况下强制执行无参数构造函数

java - Android fragment 类访问抽象方法的类组织

java - 在抽象类中编写一个 equals 方法

java - 为什么要对 List< 进行泛型转换?将 Set..> 扩展到 List<Set..> 在 Sun JDK 6 上成功但在 Oracle JDK 7 上编译失败?

android - android studio 不识别 Activity 继承