SORU
26 Kasım 2008, ÇARŞAMBA


'sabitler' paylaşım için java statik alanları ile arayüzleri;

Java içine almak ve onları bir sürü fark Java projeleri 'sabitler' arayüzü. bir çeşit açık kaynak bakıyorum

Örneğin, processing.org arayüzü PConstants.java ve diğer birçok çekirdek sınıflar bu arayüzü uygulamaya çağırdı. Arayüzü statik üyeleri ile dolu. Bu yaklaşım için bir nedeni var mı, yoksa bu kabul kötü bir uygulamadır? Neden çeteleler kullanınmantıklıya da statik bir sınıf?

Garip bir arabirim sözde bir tür için izin vermek için kullanılabilir bir 'global değişkenler'.

public interface PConstants {

  // LOTS OF static fields...

  static public final int SHINE = 31;

  // emissive (by default kept black)
  static public final int ER = 32;
  static public final int EG = 33;
  static public final int EB = 34;

  // has this vertex been lit yet
  static public final int BEEN_LIT = 35;

  static public final int VERTEX_FIELD_COUNT = 36;


  // renderers known to processing.core

  static final String P2D    = "processing.core.PGraphics2D";
  static final String P3D    = "processing.core.PGraphics3D";
  static final String JAVA2D = "processing.core.PGraphicsJava2D";
  static final String OPENGL = "processing.opengl.PGraphicsOpenGL";
  static final String PDF    = "processing.pdf.PGraphicsPDF";
  static final String DXF    = "processing.dxf.RawDXF";


  // platform IDs for PApplet.platform

  static final int OTHER   = 0;
  static final int WINDOWS = 1;
  static final int MACOSX  = 2;
  static final int LINUX   = 3;

  static final String[] platformNames = {
    "other", "windows", "macosx", "linux"
  };

  // and on and on

}

CEVAP
26 Kasım 2008, ÇARŞAMBA


"Arayüz" başka bir sınıftan, statik ithalat statik yöntemler/sabitleri almak için kullanabilirsiniz 1.5 , Java/arabirim: . sabitler bir uygulama yerine

import static com.kittens.kittenpolisher.KittenConstants.*;

Bu derslerin hiçbir işlevi arabirimleri yapma çirkinlik önler.

Sadece mağaza sabitleri için bir sınıf olan uygulama için, bazen gerekli olduğunu düşünüyorum. Sadece daha iyi bir yer. tarafsız olarak var bu yüzden bir sınıf içinde doğal bir yer yok, bazı sabitler var

Ama bir arayüz kullanmak yerine, özel bir kurucu ile son bir sınıfı kullanın. (İmkansız ya da alt sınıf oluşturmak için yapım, içermez güçlü bir mesaj olmayan statik bir işlevi/veri.)

Örneğin:

/** Set of constants needed for Kitten Polisher. */
public final class KittenConstants
{
    private KittenConstants() {}

    public static final String KITTEN_SOUND = "meow";
    public static final double KITTEN_CUTENESS_FACTOR = 1;
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bokeh

    Bokeh

    9 HAZİRAN 2014
  • Ciaran Blumenfeld

    Ciaran Blume

    20 NİSAN 2009
  • Rooster Teeth

    Rooster Teet

    11 Temmuz 2006