2012-08-14 73 views
0

我正在Swing应用程序中工作。我如何使用反射动态获取调用者实例的实例

public class Owner extends JPanel{ 
    Child child=null; 
    public Owner(){ 
    child=new Child(); 
    } 
} 

public class Child extends JPanel{ 
    public Child(){ 
    // Here I want the instance of Owner class. 
    // This child class is being created from many classes(almost 1000) like the Owner class. 
    } 
} 

我想要一些方法来获得调用类实例的实例,也许使用反射。 这样我可以将KeyListener关联到每个实例。 这是必需的,否则我必须在所有1000个类中编写相同的代码。

我所有的课程都在延伸JPanel,一旦组件与组件关联到父组件,我就可以从Parent属性获取父组件。但是在这里我需要它在Child的构造函数中,即组件还没有与Owner关联。

+1

看来设计天翻地覆,给予延长面板及需要从构造函数中访问父。 – 2012-08-14 12:15:51

+0

“如何将参数传递给构造函数”是你的问题吗?或者“我如何在我的1000个课程之间重复使用代码”? – gontard 2012-08-14 20:07:45

回答

1
public class Owner extends JPanel{ 
Child child=null; 
public Owner(){ 
child=new Child(this); 
} 
} 

public class Child extends JPanel{ 
    Object owner ; 
    public Child(Object owner){ 
     this.owner = owner ; 
     // Here I want the instance of Owner class. 
     // This child class is being created from many classes(almost 1000) like the  Owner class. 
    } 
} 
+0

我不想改变我的1000个课程。 – 2012-08-14 21:12:17

+0

我不想改变我的1000个类中的任何一个(所有的都是视图文件)。我的意图是获取它正在实例化的主视图实例(这些代码已经存在),然后我将关联一个键听从这个孩子班的观点。 – 2012-08-14 21:18:21

0

类似的东西可以帮助你:

public class Owner extends JPanel { 
    Child child; 

    public Owner() { 
     child = new Child(this); 
    } 
} 

public class Child extends JPanel { 
    Owner owner; 

    public Child(Owner owner) { 
     this.owner = owner; 
     // add key listeners here to owner 
     owner.addKeyListener(...) 
    } 
}