1

Javaでは、クラスBを拡張するクラスAがあります

クラス B からクラス A にすべてのコンテンツを割り当てたいのですが、クラス A 内からそれを実行したいのですが、これはすべての変数を転送するだけで簡単に実行できるようです。

これは難しい部分です。クラス B は作成しませんでした。これは android.widget の一部です。C++ では、クラス b を取り込んで、*this に割り当ててキャストします。

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 に答える