SORU
10 ŞUBAT 2009, Salı


Java çeteleler == kullanmak için TAMAM mı?

Java çeteleler == kullanmak için OK veya .equals() kullanmam gerekiyor? Benim test her zaman işe yarar, ama eğer bunu garanti ediyorum emin değilim. Özellikle, yok .clone() yöntem üzerine bir numaralama, yani bilmiyorum, eğer almak için bir numaralama için hangi .equals() döndürecektir farklı bir değeri daha ==.

Örneğin, bu TAMAM

public int round(RoundingMode roundingMode) {
  if(roundingMode == RoundingMode.HALF_UP) {
    //do something
  } else if (roundingMode == RoundingMode.HALF_EVEN) {
    //do something
  }
  //etc
}

Ya da bu şekilde yazmam gerekiyor

public int round(RoundingMode roundingMode) {
  if(roundingMode.equals(RoundingMode.HALF_UP)) {
    //do something
  } else if (roundingMode.equals(RoundingMode.HALF_EVEN)) {
    //do something
  }
  //etc
}

CEVAP
10 ŞUBAT 2009, Salı


, == Evet gayet iyi - her değer için sadece tek bir referans olmasını garanti yok.

Ancak, yuvarlak yöntemi yazmanın daha iyi bir yolu var:

public int round(RoundingMode roundingMode) {
  switch (roundingMode) {
    case HALF_UP:
       //do something
       break;
    case HALF_EVEN:
       //do something
       break;
    // etc
  }
}

Bir biledaha iyibunu yapmanın yolu numaralama içinde işlevselliği kendini koymak için, sadece roundingMode.round(someValue) diyebilirsin. Bu Java çeteleler kalbine alırnesne yönelimliçeteleler, değerleri" başka bir yerde buldu. "isimli aksine

EDİT: spec çok net değil, ama ** 13 devletler:

Bir numaralama türü vücut içerebilir numaralandırma sabitler. Bir numaralandırma sabiti tanımlar numaralama türünün bir örneği. Bir numaralama türü örneklerini başka yok bu numaralandırma tarafından tanımlanmış daha sabitler.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • pleated-jeans

    pleated-jean

    6 HAZİRAN 2013
  • Drakinen

    Drakinen

    1 EYLÜL 2008