よくわからないことを調べて解説してみるブログ。
2015
Format
┗ DateFormat
┗ SimpleDateFormat
┗ NumberFormat
┗ DecimalFormat
┗ ChoiceFormat
┗ MessageFormat
DateFormat,NumberFormatは、ロケール対応のみしており、細かな表現方法は指定できない。
SimpleDateFormat,DecimalFormatは、細かな表現方法が指定可能である。
ChoiceFormatは、数値について範囲ごとの表現を指定可能である。例えば、
実行結果
┗ DateFormat
┗ SimpleDateFormat
┗ NumberFormat
┗ DecimalFormat
┗ ChoiceFormat
┗ MessageFormat
DateFormat,NumberFormatは、ロケール対応のみしており、細かな表現方法は指定できない。
SimpleDateFormat,DecimalFormatは、細かな表現方法が指定可能である。
ChoiceFormatは、数値について範囲ごとの表現を指定可能である。例えば、
double[] limits = { 1, 2, 3, 4, 5, 6, 7 }; String[] dayOfWeekNames = { "Sun", "Mon", "Tue", "Wed", "Thur", "Fri", "Sat" }; ChoiceFormat form = new ChoiceFormat(limits, dayOfWeekNames); ParsePosition status = new ParsePosition(0); for (double i = 0.0; i <= 8.0; ++i) { status.setIndex(0); System.out.println(i + " -> " + form.format(i) + " -> " + form.parse(form.format(i), status)); }
実行結果
0.0 -> Sun -> 1.01.0 -> Sun -> 1.02.0 -> Mon -> 2.03.0 -> Tue -> 3.04.0 -> Wed -> 4.05.0 -> Thur -> 5.06.0 -> Fri -> 6.07.0 -> Sat -> 7.08.0 -> Sat -> 7.0
PR
2015
・代表的な実装例としては、プリミティブ型のラッパークラス群のvalueOfメソッド群
・new を用いず、引数の内容に応じて、生成するオブジェクトを切り替える。
・is-a関係にあるクラス群を全く同じ生成方法で用意することが出来る。
実装サンプル
実行結果
・new を用いず、引数の内容に応じて、生成するオブジェクトを切り替える。
・is-a関係にあるクラス群を全く同じ生成方法で用意することが出来る。
実装サンプル
package may20150531; public class FactoryPattern { public static void main(String[] args) { Men jiro = FactoryPattern.createMen("次郎"); Men somen = FactoryPattern.createMen("そうめん"); jiro.printLardQuantity(); somen.printLardQuantity(); } // ファクトリメソッド public static Men createMen(String type) { switch (type) { case "次郎": return new Jiro(); case "そうめん": return new Somen(); default: break; } // 何も言わないと、次郎を食わされる。 return new Jiro(); } } class Jiro implements Men { String name = "次郎ラーメン"; @Override public void printLardQuantity() { System.out.println(name + ", 油:マシマシ"); } } class Somen implements Men { String name = "そうめん"; @Override public void printLardQuantity() { System.out.println(name + ", 油:なし"); } } interface Men { void printLardQuantity(); }
実行結果
次郎ラーメン, 油:マシマシそうめん, 油:なし
2015
・Localeは、
・多様な作成方法がある
ビルダー、コンストラクタ、ファクトリメソッド、ロケール定数
サンプルコード
実行例
Locale
オブジェクトは、地理的、政治的、または文化的に特定の地域を表します。
・多様な作成方法がある
ビルダー、コンストラクタ、ファクトリメソッド、ロケール定数
サンプルコード
package may20150531; import java.util.Iterator; import java.util.Locale; public class LocaleInstanceVariation { public static void main(String[] args) { // language System.out.println("Locale.JAPAN.getLanguage() = " + Locale.JAPAN.getLanguage()); // script System.out.println("Locale.JAPAN.getScript() = " + Locale.JAPAN.getScript()); // country ( region ) System.out.println("Locale.JAPAN.getCountry() = " + Locale.JAPAN.getCountry()); // valiant System.out.println("Locale.JAPAN.getVariant() = " + Locale.JAPAN.getVariant()); // extensions System.out.println("Locale.JAPAN.getExtensionKeys = "); Iterator<?> ite = Locale.JAPAN.getExtensionKeys().iterator(); while(ite.hasNext()) { System.out.println(ite.next()); } System.out.println("---------------------------------------------"); // 作成バリエーション // ビルダー Locale instanceByBuilder = new Locale.Builder().setRegion("JP").setLanguage("ja").build(); System.out.println("new Locale.Builder().setRegion(\"JP\").setLanguage(\"ja\").build() = " + instanceByBuilder); // コンストラクタ Locale instanceByConstracta = new Locale("ja","JP",""); System.out.println("new Locale(\"ja\",\"JP\",\"\") = " + instanceByConstracta); // ファクトリメソッド Locale instanceByFactoryMethod = Locale.forLanguageTag("ja-JP"); System.out.println("Locale.forLanguageTag(\"ja-JP\") = "+instanceByFactoryMethod); // ロケール定数 Locale instanceByConstant = Locale.JAPAN; System.out.println("Locale.JAPAN = " + instanceByConstant); } }
実行例
Locale.JAPAN.getLanguage() = jaLocale.JAPAN.getScript() =Locale.JAPAN.getCountry() = JPLocale.JAPAN.getVariant() =Locale.JAPAN.getExtensionKeys =---------------------------------------------new Locale.Builder().setRegion("JP").setLanguage("ja").build() = ja_JPnew Locale("ja","JP","") = ja_JPLocale.forLanguageTag("ja-JP") = ja_JPLocale.JAPAN = ja_JP
2015
・プロパティをclassで保持するパターンを提供する。
・プロパティ群の取得は、ResourceBundle#getBundle
・ListResourceBundleを実装するクラスは、publicであること(パッケージプライベートだと参照できなかった)。
ListResourceBundleSample.java
ListResourceBundleSample.java
実行結果
・プロパティ群の取得は、ResourceBundle#getBundle
・ListResourceBundleを実装するクラスは、publicであること(パッケージプライベートだと参照できなかった)。
ListResourceBundleSample.java
package may20150531; import java.util.ListResourceBundle; public class ListResourceBundleSample extends ListResourceBundle { @Override protected Object[][] getContents() { Object[][] values = new Object[][] { { "key1", "val1" }, { "key2", "val2" } }; return values; } }
ListResourceBundleSample.java
package may20150531; import java.util.Enumeration; import java.util.ResourceBundle; public class ListResourceBundleTest { public static void main(String[] args) { ResourceBundle lrb = ResourceBundle.getBundle(ListResourceBundleSample.class.getName()); Enumeration<String> keys = lrb.getKeys(); while (keys.hasMoreElements()) { String element = keys.nextElement(); System.out.println(element + ":" + lrb.getString(element)); } } }
実行結果
key2:val2key1:val1
2015
・Comparableは、比較可能なという形容詞。その実体はインタフェースであり、比較可能なオブジェクトであることを示し、比較を実行可能な状態にする。
・Comparatorは、比較する者であることを示しており、あるオブジェクトを対象に比較する際のルールを制定する。
よって、
Comaprableを実装する場合は、唯一の比較表現を示すことになる。
Comparatorは、比較ルールの一つとして、比較表現を示すことになる。
ComparableのJavaDocの冒頭にも
・Comparatorは、比較する者であることを示しており、あるオブジェクトを対象に比較する際のルールを制定する。
よって、
Comaprableを実装する場合は、唯一の比較表現を示すことになる。
Comparatorは、比較ルールの一つとして、比較表現を示すことになる。
ComparableのJavaDocの冒頭にも
このインタフェースを実装する各クラスのオブジェクトに全体順序付けを強制します。この順序付けはクラスの自然順序付けと呼ばれ、このクラスの compareTo メソッドは自然比較メソッドと呼ばれます。という表記がある。
プロフィール
HN:
たんてーくん
性別:
非公開
最新記事
(03/29)
(03/29)
(06/26)
(05/21)
(04/23)
カテゴリー
最新CM
[09/25 http://2017.bblbuy.com]
[09/24 http://www.japanform.com]
[09/23 http://www.japanform.com]
[09/22 http://www.japanform.com]
[09/21 http://2017.bblbuy.com]
ブログ内検索