【发布时间】:2017-03-16 06:11:34
【问题描述】:
让 ClassA 代表一个抽象类。
我想知道是否可以在 Java 中做这样的事情:
public static abstract class ClassA {
abstract void foo();
}
private ClassB extends ClassA a = new ClassA() {
// define abstract methods here
foo() { System.out.println("in anon!"); }
// define OTHER variables here
public int varB = 10;
}
// later... varB is not defined in ClassA, but it is in a.
// how can I access varB from a?
System.out.println(a.varB);
我想特别说明一下:注意我是如何打印 varB 的。假设 varB 未在 ClassA 中定义,仅在匿名内部类中。
我有很多抽象类,我在创建它们时动态定义它们的抽象方法。但是,我也想将这些类视为它们自己的类型,因为有时我需要访问该类中特定于该对象版本的变量。
有没有办法做类似于我上面展示的事情,或者我是否需要创建一个每次都从“ClassA”扩展的“ClassB”?
是否有某种解决方法?
谢谢
【问题讨论】:
-
我想我找到了你要找的东西,我已经更新了我的答案。
-
不使用反射是不可能的。
-
嗯,是的,似乎唯一的方法是使用反射或定义类继承。
标签: java class inheritance abstract-class