2011-10-19 6 views
0

私は2つのクラスを持っています。最初のクラスはクラス1で、2番目のクラスはクラス2です。 私がしたいことはクラス1の参照をクラス2に送ります。 Class1のの参照を取るために異なるクラスからの参照用の動的オブジェクトタイプはありますか?

public class Class1 extends Activity { 
    /** Called when the activity is first created. */ 
    public int Var1 = 5; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(new Class2(this)); 
    } 
} 

public class Class2 extends SurfaceView { 
    Class1 Obj1;    //Here! 
    public Class2(Class1 Obj){ //And here I don't want to 
           //Use Class1 as a type. 
           //Is there any Global type? 
     this.Obj1 = Obj; 
    } 
    public void EditVar1(){ 
     Obj.Var1 = 10; 
    } 
} 

のClass1:これを行うには、私は、コードのこれらの種類を必要とする私は、Class1のとしてオブジェクトの型を使用する必要があります。私は複数のプロジェクトでこれらのコードを使用したいと思います。したがって、主なクラス名が異なる限り、Objのタイプ "Class1"をプロジェクトごとに編集する必要があります。ここで使用するグローバルタイプはありますか?また、私はVar1に到達することができないこれでオブジェクト型としてコンテキストを使用しようとしました。とにかく私はそれも何であるか分からない。誰かがそれが何であるかを説明できるなら、私は感謝するでしょう。何かお返事ありがとうございます!

答えて

0

この場合、最も近い祖先はすべてのJavaクラスと同様、java.lang.Objectです。 アクティビティの場合、その親はコンテキストを使用しています。アクティビティが持っている特定のプロパティとメソッドにアクセスする場合は、その親にはないオブジェクトをキャストする必要があります。例えば:

Class1 obj1; 
public Class2(Activity obj) { 
    this.obj1 = (Class1) obj; 
} 

あなたの代わりに派生クラスのスーパークラスへの参照を保持し、あなたはスーパークラスのオブジェクトへの派生オブジェクトを割り当てる場合は、派生の特定の特性を失います。これはobject slicingとして知られています。

+0

これは私が欲しいものは不可能ですか? : "D –

関連する問題