私は、私は型キャストがどのように動作するか理解していない、次のコードを持って、途中でJavaと春を学んでいます:奇妙な型キャスト((ClassPathXmlApplicationContext)context).close();
public class App {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("com/voja/spring/test/beans/beans.xml");
((ClassPathXmlApplicationContext) context).close();
}
}
だから、次
((ClassPathXmlApplicationContext) context).close();
は私がドンものです」得る。
私の考えは、それはのようにあるべきであるということである。
(ClassPathXmlApplicationContext) context.close();
しかし、それはエラーになります。
今のところ、それはどのようになっているのでしょうか?しかし、私はそれにどのようにメソッドが呼び出されていないのですか?(ClassPathXmlApplicationContext) context
はなぜかっこ内に追加できますか?
関連リンクを参照してください 'この領域のcontext'は、実際には' ApplicationContext'ので、あなたは 'context.close(言う)である;'鋳造せずに、エラーが発生します。あなたが言ったように、 '(ClassPathXmlApplicationContext)context.close();'のように括弧で囲まずにキャストすると、 'context.close()'の結果を 'ClassPathXmlApplicationContext'にキャストします。代わりに、 'context'オブジェクトだけを' ClassPathXmlApplicationContext'にキャストしたいのですが、 '((ClassPathXmlApplicationContext)context).close();'の括弧で囲まれている理由 – Orin
ここでの混乱は何か分かりません。括弧内の式が最初に評価されるので、このコードが最初にキャストされ、キャストされたオブジェクトに対して 'close'が呼び出されます。他のコードは 'close'を最初に呼び出してから、結果をキャストしようとします。 '(1 + 2)* 3'のような単純な数学と変わらない。 – Tom