忍者ブログ
よくわからないことを調べて解説してみるブログ。

2025

0517
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2015

0607
Format
┗ DateFormat
 ┗ SimpleDateFormat
┗ NumberFormat
 ┗ DecimalFormat
 ┗ ChoiceFormat
┗ MessageFormat

DateFormat,NumberFormatは、ロケール対応のみしており、細かな表現方法は指定できない。

SimpleDateFormat,DecimalFormatは、細かな表現方法が指定可能である。

ChoiceFormatは、数値について範囲ごとの表現を指定可能である。例えば、


1
2
3
4
5
6
7
8
9
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.0
1.0 -> Sun -> 1.0
2.0 -> Mon -> 2.0
3.0 -> Tue -> 3.0
4.0 -> Wed -> 4.0
5.0 -> Thur -> 5.0
6.0 -> Fri -> 6.0
7.0 -> Sat -> 7.0
8.0 -> Sat -> 7.0

拍手[0回]

PR

2015

0531
・代表的な実装例としては、プリミティブ型のラッパークラス群のvalueOfメソッド群
・new を用いず、引数の内容に応じて、生成するオブジェクトを切り替える。
・is-a関係にあるクラス群を全く同じ生成方法で用意することが出来る。

実装サンプル
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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();
}

実行結果
次郎ラーメン, 油:マシマシ
そうめん, 油:なし

拍手[0回]

2015

0531
・Localeは、
Locale オブジェクトは、地理的、政治的、または文化的に特定の地域を表します。

・多様な作成方法がある
 ビルダー、コンストラクタ、ファクトリメソッド、ロケール定数


サンプルコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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() = ja
Locale.JAPAN.getScript() =
Locale.JAPAN.getCountry() = JP
Locale.JAPAN.getVariant() =
Locale.JAPAN.getExtensionKeys =
---------------------------------------------
new Locale.Builder().setRegion("JP").setLanguage("ja").build() = ja_JP
new Locale("ja","JP","") = ja_JP
Locale.forLanguageTag("ja-JP") = ja_JP
Locale.JAPAN = ja_JP

拍手[0回]

2015

0531
・プロパティをclassで保持するパターンを提供する。
・プロパティ群の取得は、ResourceBundle#getBundle
・ListResourceBundleを実装するクラスは、publicであること(パッケージプライベートだと参照できなかった)。

ListResourceBundleSample.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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:val2
key1:val1

拍手[0回]

2015

0531
・Comparableは、比較可能なという形容詞。その実体はインタフェースであり、比較可能なオブジェクトであることを示し、比較を実行可能な状態にする。

・Comparatorは、比較する者であることを示しており、あるオブジェクトを対象に比較する際のルールを制定する。

よって、
Comaprableを実装する場合は、唯一の比較表現を示すことになる。
Comparatorは、比較ルールの一つとして、比較表現を示すことになる。

ComparableのJavaDocの冒頭にも
このインタフェースを実装する各クラスのオブジェクトに全体順序付けを強制します。この順序付けはクラスの自然順序付けと呼ばれ、このクラスの compareTo メソッドは自然比較メソッドと呼ばれます。
という表記がある。


拍手[0回]

<< 前のページ 次のページ忍者ブログ [PR] * Template by TMP >>
プロフィール
HN:
たんてーくん
性別:
非公開
フリーエリア
最新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]
ブログ内検索
忍者ブログ [PR]
* Template by TMP