情况是这样的:A.java
public class A
{
    private B instanceB;
    public A(B argB) 
    {
          instanceB = argB;
    }
}    B是一个对象,现在又有一个对象C,我怎样改A.java才能动态地为instanceB赋值呢,无论参数是传B或是C.

解决方案 »

  1.   

    给成员变量instanceB添加set方法啊
      

  2.   

    然后通过反射调用这个set方法
      

  3.   

    应该可以不改A.java的
    你能用 C 代替 B,应该C有B的所有功能对吧?那么C应该是B的子类
    所以在调用时
    原来:
    A objA=new A(new B());
    要换成C:
    A objA=new A(new C());
      

  4.   

    to imA:thanks.
    -----------------------------
    你是说这样?
    public class A
    {
        private B instanceB;    public void setInstanceB(B arg)
        {
            this.instanceB = arg;
        }    public A() 
        {
              instanceB...
        }
    }
    如果是这样的话,instance与arg应该写成什么类型呢?Object?Class?
      

  5.   

    to welshem:thx too.
    -----------------------------------
    抱歉,B与C不是子与父的关系,所以不能对A进行向上的转换.比如说B与C都是一个MID窗口中的小窗口的实例.
      

  6.   

    LZ:如果你在A中不会对instanceB作操作(当然这种可能性应该没有)
    那么直接改为A.java
    public class A
    {
        private Object instanceB;
        public A(Object argB) 
        {
              instanceB = argB;
        }
    }不过这样在开发上好象没意思了
      

  7.   

    to welshem:thx too.
    -----------------------------------
    抱歉,B与C不是子与父的关系,所以不能对A进行向上的转换.比如说B与C都是一个MID窗口中的小窗口的实例.那他们有共同的父类啊,用这个父类
      

  8.   

    啊,我把情况说得详细点:    我在做基于SWT的GUI,由于刚学java ,不是很懂.
        
        现在有二个窗口,二个窗口上都有一个Button组件(二个窗口的button无论属性与事件都是相同的,但各自窗口还有其他自己的组件),我想用写一个类,类中有个方法对窗口button组件进行操作,而传入的参数来识别要对哪个窗口进行操作.
      

  9.   

    我不知道private B instanceB;中的B应该定义什么类型,定义成窗口的父类应该不能对窗口里的组件进行操作吧?