fc2ブログ

[Javadoc] Eclipseで生成しようとしたら文字化けしてエラーになった

Eclipseを使用してJavadocのHTMLファイルを生成しようとして、
「プロジェクト」⇒「Javadocの生成」をして、
特別な設定はせずに、生成しようとしたら以下のエラーが出てきた。。。

"この文字は、エンコーディング MS932 にマップできません。"


文字コードの問題のようなので、
「プロジェクト」-「プロパティ」でプロジェクトで使用している
エンコードを確認。

------------------------------
テキストファイルのエンコード
 ・コンテナーから継承(UTF-8)
------------------------------

となっていた。
UTF-8をMS932でマッピングしようとしたから、コードがあわなくて
エラーとなったんだな。


Javadocを生成する際の設定で、
「追加のJavadocオプション」に以下を指定すれば、
問題は解消する。
----------------------
-encoding UTF-8
-charset UTF-8
----------------------



上記で文字化けの問題は解決したが、
次は以下のようなエラーが出てきた。。。
#今回は、androidアプリのJavadocを作成しようとした。
------------
・パッケージ android.content は存在しません。
・パッケージ android.net は存在しません。
・パッケージ android.webkit は存在しません。

------------

これは、「追加のJavadocオプション」に bootclasspath で android.jar を
指定してあげれば解消される。
----------------------
-bootclasspath "C:\Users\t-oka\Documents\android\sdk\platforms\android-18\android.jar"
----------------------


これでエラーと警告なしで、JavadocのHTMLファイルが生成されました。

[Java] SimpleDateFormat で警告

new SimpleDateFormat("yyyyMMddHHmmss");

new Date()で取得した日時をフォーマット指定で
文字列にした際、以下の警告が出た。

To get local formatting use getDateInstance(), getDateTimeInstance(), or getTimeInstance(), or use new SimpleDateFormat(String template, Locale locale) with for
example Locale.US for ASCII dates.



警告の解決方法は、ロケールを設定するとのこと。

new SimpleDateFormat("yyyyMMddHHmmss", Locale.JAPANESE);

これで、警告が消えました。
ちなみに、Locale.ENGLISH を指定しても大丈夫でした。

[Java] サイズを指定して文字列の後ろに空白を入れる

文字列の前後に付いてる空白を取りたい場合は、String.trim()で除去することができますが、逆に空白をつけたい場合はどうすればいいのか検討してみた。

Stringクラスのメソッドに要件を満たしてくれるのはどうやらなさそう。。。
自前でメソッド(処理)を用意するしかなさそうなので、作成してメモを残しときます。

■作成したメソッド

/**
* 文字列の後ろに半角スペースを付与
* 引数で渡された文字列の後ろに、半角スペースを挿入して、

* 引数で指定した長さの文字列に変換する。

*
* @param str 文字列
* @param size 半角スペースを付け加えた文字列の長さ
* @return 半角スペースを付け加えた文字列
*/
private static String rightPad(String str, int size) {
StringBuilder sb = new StringBuilder();

sb.append(str);

for (int i = str.length(); i < size; i++) {
sb.append(" ");
}

return sb.toString();
}


単純にループして半角スペースを追加しているだけです。


■使用サンプル
以下のように使用すると、「abc」+半角スペースで10文字に変換するため、「abc」と「def」の間に半角スペースが7文字入ります。

public static void main(String[] args) {
String out;

StringBuilder sb = new StringBuilder();

String s1 = "abc";
String s2 = "def";

sb.append(rightPad(s1, 10));
sb.append(s2);

out = sb.toString();
System.out.println("出力:" + out);
}


コンソールには以下のように出力される。
-----------
出力:abc def
-----------



StringのUtilクラスなどに入れておけば、役に立つときがあるかな。




[Java]2つのオブジェクトが等しいか判定するメソッド

単純なんだけど、よく使用するオブジェクトの比較処理。
出現するたびに比較ロジックを書くよりメソッド化して、
共通処理にしたほうがスッキリするかな。


/**
/* 2つのオブジェクトが等しいか判定するメソッド
/*
/* @param obj1 比較対象オブジェクト1
/* @param obj2 比較対象オブジェクト2
/* @return true/false 2つのオブジェクトが等しい場合はtrue
*/
public static boolean compareObjedct(Object obj1, Object obj2) {
boolean ret;

if (obj1 == null) {
ret = (obj2 == null);
} else {
ret = obj1.equals(obj2);
}

return ret;
}


しばらく、上記のメソッドを使いまわしてみる。



[Java] StringBuilder に null を append すると

StringBuilder を使用していて、たまたまNULLを追加したら、
そのまま "null" という文字が追加されてしまいビックリした。


StringBuilder sb = new StringBuilder();

String nullString = null;

sb.append("A");
sb.append(nullString);
sb.append("B");
System.out.println(sb.toString());



上記プログラムの出力結果は、

AnullB


AとBの間に "null" の文字が。。。
でも、これは仕様のようですね。

Javadoc にも明記されていました。
The characters of the String argument are appended, in order, increasing the length of this sequence by the length of the argument. If str is null, then the four characters "null" are appended.


プロフィール

hiiro

Author:hiiro

最新記事
カテゴリ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
QRコード
QR
Counter