SORU
13 Mayıs 2009, ÇARŞAMBA


Çeteleler Java ve Açıklamaları varsayılan dava açmak mı?

İnsanlar bir istisna atma: önerdiğin için< / ^ br . Bir özel durum beni derleme zamanı hatası vermez atma, bana bir çalışma zamanı hatası verir. İstisna biliyorum, daha doğrusu çalışma zamanı sırasında daha derlenirken ölürüm.

Öncelikle, eclipse 3.4 kullanıyorum.

Bir Numaralama Modu özelliği olan bir veri modeli var.

enum Mode {on(...), off(...), standby(...); ...}

Şu anda bu modelin bir görünüm yazıyorum ve kod var

...
switch(model.getMode()) {
case on:
   return getOnColor();
case off:
   return getOffColor();
case standby:
   return getStandbyColor();
}
...

"Bu yöntem tipte java dönmem gerekiyor.bir hata alıyorum awt.Renk hiçbir varsayılan durumda ve geri dönüşü var çünkü" işlevi sonunda xxx. Benistiyorumbir derleme hatası durumda birisi ekler başka bir türü için numaralama (örneğin shuttingdown) yani ben kalmak istemeyiz varsayılan durum atar bir AssertionError, bu derleme ile bir modifiye Modu ve, görüldüğü gibi bir hata kadar çalışma zamanı.

Benim sorum şu:< / ^ br . Neden EclipseBuilder (javac) bu anahtar, tüm olasılıkları (ya da onları karşılar mı?) kapsayan tanımıyor ve bana uyarı bir dönüş türü almam konusunda durdurun. İstediğim Modu için yöntemler ekleme olmadan yapabileceğim bir yol var mı?

O da olmazsa,/uyarmak için bir seçenek hata Numaralama olası tüm değerleri kapağı olmayan ifadeleri anahtarı var mı?

Edit: Rob: derlemehata. Ben sadece javac ile derlemeye çalıştı ve "eksik iade bildirimi" son hedefleme hatası } yöntemi. bence Eclispe sadece yöntemi üstünde hata yerler.

CEVAP
13 Mayıs 2009, ÇARŞAMBA


Eclipse etkinleştirmek için (- ^penceresi . tercihleri) ayarlar "yazın sürekli" Hata düzeyi ile. anahtarı bulunmayan Numaralama

Bu yöntem sonunda bir özel durum, ancak varsayılan harf kullanmayın.

public String method(Foo foo)
  switch(foo) {
  case x: return "x";
  case y: return "y";
  }

  throw new IllegalArgumentException();
}

Şimdi eğer birisi yeni bir dava daha ekler, Eclipse onu bir dava eksik olduğunu yapacaktır. Yani şimdiye kadar bunu yapmak için gerçekten iyi bir sebep yoksa, varsayılan kullanmayın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Helen Bradley

    Helen Bradle

    4 Mart 2008
  • steeletraining

    steeletraini

    28 NİSAN 2010
  • Willie D.

    Willie D.

    16 Aralık 2006