1

在java中我有一个扩展类B的类A

我想将 B 类中的所有内容分配给 A 类事情是我想从 A 类内部进行,现在这似乎很容易做到,只需转移所有变量。

这是困难的部分。我没有让 B 类成为 android.widget 的一部分。

我将如何在 java 中执行此操作?

为了进一步澄清它是一个相对布局,我需要将一个相对布局的所有内容复制到一个扩展相对布局的类中

class something extends other
{
public something(other a){
 //transfer all of the other class into something
 this=(something)a;  // obviously doesn't work
 //*this doesn't exist?
 //too many variables to transfer manually
}
}

非常感谢所有的帮助。真的很欣赏!!!

4

3 回答 3

5

请参阅下面给出的代码。它使用java.lang.reflect包从超类中提取所有字段并将获得的值分配给子类变量。

import java.lang.reflect.Field;
class Super
{
    public int a ;
    public String name;
    Super(){}
    Super(int a, String name)
    {
        this.a = a;
        this.name = name;
    }
}
class Child extends Super 
{
    public Child(Super other)
    {
        try{
        Class clazz = Super.class;
        Field[] fields = clazz.getFields();//Gives all declared public fields and inherited public fields of Super class
        for ( Field field : fields )
        {
            Class type = field.getType();
            Object obj = field.get(other);
            this.getClass().getField(field.getName()).set(this,obj);
        }
        }catch(Exception ex){ex.printStackTrace();}
    }
    public static void main(String st[])
    {
        Super ss = new Super(19,"Michael");
        Child ch = new Child(ss);
        System.out.println("ch.a="+ch.a+" , ch.name="+ch.name);
    }
}
于 2013-03-09T19:55:40.557 回答
0

父类(非私有)的所有变量和函数在子类中都是直接访问的。您不需要在子类中分配任何东西。您可以直接访问。

于 2013-03-09T18:46:03.737 回答
0

这将不起作用

Something something = (Something) other.clone();

如果 other 的真正运行时类型Other.

相反,您必须创建一个复制构造函数,或者将other其实例化为实例Something然后克隆它。

于 2013-03-09T18:51:40.780 回答