java 定数について字体

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 定数について字体相关的知识,希望对你有一定的参考价值。

/* 型に安全な定数
 * サブクラスを不可にすることによりFontだけを
 * ConstProxyに入れられるようにする
 */
class ConstProxy {
	private Font font_;
	private int value_;
	public ConstProxy(Font font_, int value_) {
		this.font_ = font_;
		this.value_ = value_;
	}
	public boolean isHolding(Font font){
		return font_ == font;
	}
	public int getValue(){
		return value_;
	}
}
public final class Font {
	public static final Font PLAIN = new Font();
	public static final Font BOLD = new Font();
	private static List<ConstProxy> proxies_ = new ArrayList<ConstProxy>();
	static {
		// proxes_.add(new FishTank(), 0); // コンパイルエラー
		proxies_.add(new ConstProxy(PLAIN, 0));
		proxies_.add(new ConstProxy(BOLD, 1));
	}
	// Fontが他の場所で生成されることを防止する
	private Font() {	};
	static int valueOf(Font font) {
		ConstProxy constProxy = null;
		Iterator<ConstProxy> it = proxies_.iterator();
		while (it.hasNext()) {
			constProxy = (ConstProxy) it.next();
			if (constProxy.isHolding(font))
				break;
		}
		return constProxy.getValue();
	}
	public class Tester {
		public void test() {
			// Fontの定数のみ許可
			// constTest(FishTank.MAXIMUM_NUMBER_OF_FISH);
			constTest(Font.PLAIN);
		}
		// 範囲チェックが不要になった!!
		public void constTest(Font font) {
			if (font == Font.BOLD) {
				System.out.println("BOLD");
			}
			if (font == Font.PLAIN) {
				System.out.println("PLAIN");
			}
		}
	}
}

class FishTank {
	public static final int MAXIMUM_NUMBER_OF_FISH = 10;
}

class CallFont {
	public static void main(String[] args) {
		System.out.println(Font.valueOf(Font.BOLD));
	}
}

以上是关于java 定数について字体的主要内容,如果未能解决你的问题,请参考以下文章

java 收藏についてTreeSetSample

java 收藏についてTreeMapSample

java 收集についてNavigableMapSample

java 收藏についてDequeSample

java 收藏についてQueueSample

java 系列についてCollectionTechnique