我有一个带有非静态非抽象内部类的抽象类,我必须从静态方法实例化。怎么办呢?
这基本上就是我想做的事情:
abstract class Program
{
private static Window window;
public static void main(String[] args)
{
Program program = new Program();
window = program.new Window();
}
abstract void Update();
class Window
{
public Window()
{
//some code
}
public void someMethod()
{
Update();
}
}
}
我知道你无法实例化一个抽象类,并且你可以在没有外部类实例的情况下从静态方法实例化内部类,所以我不知道该怎么做。
答案 0 :(得分:2)
你可以做的只是创建一个扩展你的抽象类的类,在那个类中你可以实例化你的内部类,如下所示:
public class TestProgram extends Program
{
public static void main(String[] args)
{
Program program = new TestProgram();
Window window = program.new Window();
}
}
答案 1 :(得分:0)
最简单的答案似乎是创建一个Program实现,您可以使用它来实例化Window对象。
更一般地说,我认为你的悖论是你的答案。你试图设计一些在语言限制范围内不起作用的东西,你必须放弃程序的抽象本质,或者让Window成为你可以在程序之外创建的类。
答案 2 :(得分:0)
为什么你的主要方法在abstract class
?
这里更大的问题是设计。将Window类作为内部类有什么意义?如果要从抽象类中实例化该对象,只需使Window成为自己的顶级类。
它似乎没有从其包含的类访问任何东西,那么为什么它是一个内部类?