2012-02-18 26 views
8

benim ders kitabındaki bu genelinde bir başlangıç ​​programcı değilim ve geldi:Veri türü etrafındaki parantezler?

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

IntElementDataElement bir alt sınıfıdır. num, bağlantılı bir liste için bir değeri saklayan bir int.

(IntElement) ürününün amacı nedir temp =?IntElement temp = otherElement ile ilgili ne olabilir? Ve genel olarak, parantez içinde böyle bir veri türü ne yapar?

cevap

8

buraya bakın:

Temelde, böyle yaparak:

IntElement temp = (IntElement) otherElement; 

Eğer olarak otherElement ilan gerçeğini göz ardı etmek derleyici anlatıyorsun DataElement ve size güvenirsiniz IntElement ve DataElement ya da DataElement diğer bazı alt sınıfları.

sadece IntElement temp = otherElement;DataElement bu durumda IntElement olmak üzere bazı diğer unsur haline olarak tanımlanmıştır Eğer otherElement kılacak bu yolla, hem yapamaz. Bu, tür güvenliği için büyük bir darbe olacaktır; bu, türlerin ilk sırada tanımlanmasının sebebidir.

ancak Java olduğunu desteklemez ve açık olmak zorunda:

Bu teknik olarak tip çıkarımlar kullanılarak yapılabilir.

  • Operatörler/TheinstanceofKeyword.htm "> http://www.java2s.com/Tutorial: diğer unsurları elde etmek mümkün değilse

    , sen döküm önce tip çalışma zamanını kontrol etmek instanceof kullanmak isteyebilirsiniz/Java/0060_Operators/TheinstanceofKeyword.Bu geçmesi sonrasında bir noktada htm

, siz de jenerik bir göz atmak isteyebilirsiniz:

1

(IntElement)IntElement

Kontrol dışarı bu bağlantıyı daha ayrıntılı açıklaması için yaklaşık Java Types and Type Conversion (Casting) yazmak için tip DataElement taşımaktadır otherElement atmalarını. temp sonra (IntElement) amacı tip dönüştürme uygulayarak

2

ve teknik olarak daha bir sen, daha somut bir nesne olarak alınmalıdır tip DataElement bir parametre olduğunu otherElement, söylüyorsun nerede, dökme IntElement yazın.

Bu döküm denir
1
döküm olduğunu

jmein doğruysa, derleyici/yorumlayıcının bir değişken türünü diğerine çevirmesini söyler. Gerçekte, sadece işlemciye başka bir tip olarak davranmasını söylüyor. C'de bu bir nimet ve lanettir, java'da, yazdığınız gibi görünüyor, değişkeni farklı bir şekilde tedavi etmelisiniz.