2016-12-17 6 views
1

こんにちは、私はJavaを学び始め、いくつかのかなり難しいコードを介して自分のやり方を工夫し始めた。Java - 型への変数のキャストは型のクラスをインスタンス化しますか?

変数をオブジェクト型にキャストするだけで、そのオブジェクトをインスタンス化するのに十分かどうか疑問に思っていますか?私は1つの方法は、メソッドの引数内のArrayTypepastaVariableと呼ばれるオブジェクトをキャストする方法に気づいコード中に

こちらをご覧ください:

public ComplexType getIndexPredicateTypeForArray(ArrayType pastaVariable) { 
     final Type baseType = pastaVariable.getBaseType(); 
     return baseType; 
    } 

方法getBaseType()をは、次のようになりますクラスArrayType.java内で定義されています

public class ArrayType extends Type { 

    private final Type   baseType; 
    private final Type   parent; 

    ArrayType(String name, Type baseType, Type parent) { 
     super(name); 
     this.parent = parent; 
     this.baseType = baseType; 
    } 

    public Type getBaseType() { 
     return baseType; 
    } 
.... 

変数baseTypeであるためArrayType.javaは、ArrayTypeクラスで宣言されていますのコンストラクタ私はこのコンストラクタがトリガされているのだろうか?

ArrayTypeのクラスコンストラクタがコード内の他の場所で呼び出されるのを見つけることができません。

だから、私たちはgetIndexPredicateTypeForArrayメソッドの引数としてpastaVariableのArrayTypeにをキャストするときのArrayTypeコンストラクタがトリガされることは可能でしょうか?

+1

ここに完全なコードを投稿しているとは思わないが、コードに含まれていない方法を参照すると混乱するだけです。 – Mritunjay

+0

ありがとう@Mritunjay。それに応じてコードを調整しました。 – Z101

+1

どこから 'getIndexPredicateTypeForArray'を呼び出しますか?どのような価値? – nullpointer

答えて

1

getIndexPredicateTypeForArrayのどこからでも呼び出すことができます。唯一の引数としてArrayTypeのインスタンスをこのメソッドに渡します。そのインスタンスが作成されると、ArrayTypeのコンストラクタを呼び出すか、クラス内で宣言されたフィールドを定義します。

+1

@nullpointerありがとうございました!これは本当に役に立ちます! – Z101

関連する問題