2012-02-18 4 views
8

私は始めのプログラマーだと私の教科書でこの出くわし:データ型のまわりのかっこですか?

public boolean equals(DataElement otherElement) 
{ 
    IntElement temp = (IntElement) otherElement;    
    return (num == temp.num); 
} 

IntElementDataElementのサブクラスです。 numは、リンクされたリストの値を格納するintです。

(IntElement)の目的は何ですかtemp =?IntElement temp = otherElementの場合はどうなりますか?そして、一般的に、データ型をかっこで囲んでいるのは何ですか?

答えて

8

これは、ここを参照してください、キャストと呼ばれる:

を基本的には、これを行うことによって:

IntElement temp = (IntElement) otherElement; 

をあなたがようotherElementを宣言したという事実を無視するようにコンパイラーに指示していDataElementとあなたはそれがIntElementであり、ではないと信じていますまたはDataElementの他のサブクラスである。

あなただけIntElement temp = otherElement;DataElement、この場合IntElementには、いくつかの他の要素になるように定義されたあなたはotherElementになるだろう、この方法、などを行うことはできません。これは型安全性にとって大きな打撃となるでしょう。なぜなら、タイプの種類が最初に定義されているからです。

これは技術的に型推論を使用して行うことができます

しかしJavaはそれをサポートしていない、あなたが明示的でなければなりません。

  • 演算子/ TheinstanceofKeyword.htm "> http://www.java2s.com/Tutorial:それは他の要素を取得することが可能です場合

    、あなたは鋳造前にタイプの実行時にチェックするためにinstanceofを使用することもできます/ Java/0060_Operators /キーワードのインスタンス。あなたはこの通過した後、あなたも、ジェネリックを見てみたいかもしれないいくつかの時点で、HTM

1

(IntElement)IntElement

チェックアウト、このリンクより完全な説明については約Java Types and Type Conversion (Casting)を入力するタイプ定義するDataElementであるotherElementをキャスト。

2

temp(IntElement)の目的はあなたはタイプDataElementのパラメータでありotherElementは、より具体的な対象として取られるべきであることを言っているを、キャスト、より技術的に、型変換を実行していますタイプIntElement

1
をキャストタイプであります

jmeinは正しいです、それはコンパイラ/インタプリタに、ある一つの変数型を別のものに変えるように指示します。実際には、それを別のタイプとして扱うようにプロセッサに指示するだけです。 Cでは、これは祝福と呪いです。Javaでは、あなたが書いているように見えますが、それを別の方法で扱うためにはキャストしなければなりません。