Java演算子を使用することinstanceof
は一種の反省かどうか、今日同僚と話し合いました。そして、議論はすぐに実際に反射を定義するものに進化しました。
だから、反射の定義は何ですか?
そして、instanceof
考慮された「反射を使用する」の使用法はありますか?
さらに、instanceof
反射と見なされる場合、多型も「反射を使用する」わけではありませんか?そうでない場合、違いは何ですか?
return
考慮された「構造プログラミング」の使用はありますか?
Java演算子を使用することinstanceof
は一種の反省かどうか、今日同僚と話し合いました。そして、議論はすぐに実際に反射を定義するものに進化しました。
だから、反射の定義は何ですか?
そして、instanceof
考慮された「反射を使用する」の使用法はありますか?
さらに、instanceof
反射と見なされる場合、多型も「反射を使用する」わけではありませんか?そうでない場合、違いは何ですか?
return
考慮された「構造プログラミング」の使用はありますか?
回答:
これは、ウィキペディアによる反射の定義です。
コンピューターサイエンスでは、リフレクションとは、コンピュータープログラムが実行時に自身の構造と動作を観察(タイプイントロスペクション)し、変更できるプロセスです。
私は自分でそれをもっとうまく言うことはできず、あなたの質問の重要な部分を強調しました。そうは言っても、はい、instanceof
リフレクションを使用すると考えられます。プログラムはその構造を観察し、型の内省を行います。
if (true)
見るということです。それが反射とは見なされない理由です。
明確にするために、2つの答えを検討します。
理論的にinstanceof
は、Falconの答えで説明されているように、反射の形式です。
コンピューターサイエンスでは、リフレクションとは、コンピュータープログラムが実行時に自身の構造と動作を観察(タイプイントロスペクション)し、変更できるプロセスです。
ただし、実際には、プログラマがリフレクションの使用について話すとき、通常、変数が特定の型であるかどうかを確認するだけではありません。これはそのような初歩的な概念であり、それなしではポリモーフィズムは不可能です。
instanceof
頻繁に使用することはコードのにおいを示し、代わりに適切な多態性を使用することが多いことに注意してください。
次の記事に興味があるかもしれません:http : //java.sun.com/developer/technicalArticles/ALT/Reflection/
この記事のキーは、Javaのリフレクション機能の一部である「クラス」クラスの「isInstance」メソッドを使用して「instanceof」キーワードをシミュレートするコードスニペットです。
他の回答以降、Wikipediaの定義が変更されました(たまたまこの変更に同意しましたが、私が作成したのは私ではありませんでした)。
コンピューターサイエンスでは、リフレクションとは、コンピュータープログラムが実行時に自身の構造と動作を調べ、内省し、変更する能力です。
https://en.wikipedia.org/wiki/Type_introspectionも具体的に言う
イントロスペクションとリフレクションを混同しないでください
私は考えていないinstanceof
プログラムが値ではなく、独自の構造を調べ、それが(Javaで:プログラム構造を表す任意の値を含まない:最初の定義に該当するjava.lang.Class
、java.reflect.Method
など)。反射の特徴は、そのような値で機能しています。
instanceof
、リフレクションの例であるかどうかが決まります。確かに、それは通常のデータ使用とメタデータの使用の間のどこかにありgetClass()
ますが、方法なしで実行可能な定義を持つことができます。