我正在研究一些进入 Java 的开源 Java 项目,并注意到其中许多项目都有某种类型的“常量”接口。
例如,Processing.org有一个名为 PConstants.java的接口,而大多数其他核心类实现了这个接口。该接口充斥着静态成员。这种方法是有原因的,还是被认为是不好的做法?为什么不使用枚举 有意义的地方或静态类?
我发现使用一个接口来允许一些伪“全局变量”是很奇怪的。
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
}