FC2ブログ
HOME   »  2011年07月
Archive | 2011年07月

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Java]配列やArrayListの要素数の最大値

配列やArrayListには最大いくつの要素を格納できるのか。

配列やArrayListの要素数を取得するlengthメソッドやsizeメソッドの戻り値、あるいは要素の位置を指定するインデックスがintであることから、配列やArrayListの要素数の最大値はintの最大値である

2147483647(2の31乗-1)

となる。

(2011-08-10 追記)
また、インデックスは0から始まるので、インデックスの最大値は

2147483646

となる。


スポンサーサイト

[Java]Singletonパターン

Singletonパターンとはデザインパターンの1つで、あるクラスのインスタンスが1つしか生成されない(できない)ことを確実にするためのデザインパターンである。

Singletonパターンの実装は以下の通り。
public class Hoge {
    private static Hoge instance = new Hoge();

    private Hoge() {
        あれこれ(コンストラクタでの処理)
    }

    public static Hoge getInstance() {
        return instance;
    }

    以降、その他のフィールドやメソッドを実装
}
Singletonパターンのポイントは以下。

・自身のインスタンスをprivate且つstaticなフィールドとして保持する。
・コンストラクタをprivateとし、他クラスから呼び出せないようにする。
・コンストラクタとは別に、自身のインスタンスを返すpublic且つstaticなメソッドを実装し、他クラスはこのメソッドを呼び出すことにより本クラスのインスタンスを取得する。

以上の実装により、インスタンスが1つしか生成されないことを確実にすることができる。

(2011-07-26 追記)
ちなみに、このSingletonパターンでインスタンスがいつ生成されるのか(いつコンストラクタが呼び出されるのか)、下記コードで確認してみる。

○Singletonパターンクラス
public class Hoge {
    private static Hoge instance = new Hoge();

    private Hoge() {
        System.out.println("Constructor");
    }

    public static void testMethod() {
        System.out.println("testMethod");
    }

    public static Hoge getInstance() {
        System.out.println("getInstance");
        return instance;
    }
}

○上記クラスの各メソッドを実行
public class Main {
    public static void main(String[] args) {
        System.out.println("Start");
        Hoge.testMethod();
        Hoge hoge = Hoge.getInstance();
    }
}
上記を実行すると、コンソールには以下の様にメッセージが表示される。


Start
Constructor
testMethod
getInstance


上記の結果から、初めてHogeクラスにアクセスしたタイミングでインスタンスが生成される(コンストラクタが呼び出される)ことが分かる。


[Android]WebViewのイベントが発生した時に任意の処理をさせる

WebViewの各イベント(ページ読み込み開始/ページ読み込み完了等)が発生した時に任意の処理をさせたい場合は、WebViewClientクラスを使用する。

まず、WebViewClientクラスを継承したクラスを作成し、任意の処理をさせたいイベントのイベントハンドラメソッドをオーバーライドして、そのメソッドの中で目的の処理を実装する(下記の例はページ読み込み開始時とページ読み込み完了時の処理を実装)。
public class MyWebViewClient extends WebViewClient {
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        あれこれ(ページ読み込み開始時の処理)
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        あれこれ(ページ読み込み完了時の処理)
    }
}
そして、上記のクラスのインスタンスをWebViewクラスのsetWebViewClientメソッドの引数として設定する。
WebView webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new MyWebViewClient());
これで、webViewでのページ読み込み開始時とページ読み込み完了時に、MyWebViewClientクラスで実装した処理をさせることができる。


[Java]Calendarクラスで現在の月を取得する時の注意点

Calendarクラスのgetメソッドを使用して現在の月を取得するには、以下の様にgetメソッドの引数に月を示すフィールド値"MONTH"を指定する。
Calendar calendar = Calendar.getInstance();
int month = calendar.get(Calendar.MONTH);
但し、Calendarクラスでの月は1~12ではなく0~11で表される為、実際の月を取得したい場合は、以下の様にgetメソッドで取得した値に+1する必要がある。
Calendar calendar = Calendar.getInstance();
int month = calendar.get(Calendar.MONTH) + 1;
尚、上記では「現在の」としているが、より正確には「Calendarクラスのインスタンスを取得した時点の」が正しい(取得したインスタンスが取得時点の日時を保持している為)。


[開発環境]Eclipse起動時に"Failed to create the Java Virtual Machine."メッセージが表示されて起動できない時の対処法

Eclipse起動時に、"Failed to create the Java Virtual Machine."というメッセージが表示されて正常に起動できないことがあるらしい。

自分の環境ではお目にかかったことはないが、周囲で発生したという話を聞いた。
Webを検索してみると、Helios(Version 3.6)とIndigo(Version 3.7)で発生という情報があり、自分はGalileo(Version 3.5)を使用しているので、Helios(Version 3.6)以降のVersionでの問題かもしれない。

で、この現象が発生した時の対処法についての備忘録。

以下の対処法は、どちらも「eclipse.ini」ファイルを編集するもの。

○対処法その1
"-Xmx512m"を"-Xmx256m"に変更する。
ちなみに、Galileo(Version 3.5)では最初から"-Xmx256m"となっている。

○対処法その2
"-vmargs"の前に

-vm
(javaw.exeのパス)

という2行を追加する。
ちなみに、Galileo(Version 3.5)ではこの記述はない。


プロフィール

まさお

Author:まさお
プログラミングは趣味レベルなので、お手柔らかに。

ブログランキング
ブログランキング参加中。是非クリックお願いします。


にほんブログ村 IT技術ブログ Androidアプリ開発へ

人気ブログランキングへ

ブログランキング



ブログ王

ブログランキング【ブログの惑星】

プログラム人気ブログランキング
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。