Java
JavaでBeanやDTOのフィールドの項目長をチェックするサンプルプログラムを書きました。フィールドに項目長用のアノテーションを追加し、そのアノテーションとフィールドの項目長とを比較して、項目長がオーバーしていたらログ出力するコードです。
JavaでBeanやDTOのフィールドの値を一気に更新したい。例えば、空文字が入っているString型のフィールドの値を一律nullにしたい。ただし、フィールドをひとつずつ見ていってnullにセットする処理はやりたくない。そんな要望を満たすべく、変数の値を一括で初…
TimerやScheduledExecutorServiceといったスケジュール機能を利用すると、タスクを定期的に実行させることができます。しかし、タスク実行中に例外(Exception)が発生すると、スケジュール機能自体が停止してしまう可能性があります。このスケジュール機能停…
日付のフォーマットが異なるJSONデータをDTOなどにしたい場合もあったりします。下記のようなJSONデータをGsonライブラリを利用してデータオブジェクトに変換する処理をメモしました。 { "date": "2013-09-17", "created_at": "2013-09-16T22:32:36Z", "msg"…
Eclipseのデバッグモードでプログラムをトレースしている途中にエラー(Exception)を発生させたい時もあったりします。忘れがちなので、その方法をメモしました。 事前準備(displayビューの追加) EclipseのWindow -> Show View -> Otherより、display ビュ…
log4j2でセッションIDやユーザID等、ログに毎回書き出したいような情報を付加する場合はThreadContextを利用するのが良さそうです。Thread ContextのStackとMapの機能を利用して、追加情報をログに出力するサンプルを書きました。
ログレベルの設定値を、ログの設定ファイル(log4j2.xml)ではなくソースコードや外部ファイルに持たせたい要求もあったりします。その要求を満たすべく、log4j2.xmlに書いたログレベルをファイル読み込み時に上書きするサンプルを書きました。
次のプロジェクトがどうやらSpring Frameworkを使うようなので、さっそく勉強です。まずは開発環境の構築です。すぐにできるかと思ったけれど、なんかいろんなエラーが出たわけで。。
AndroidでMQTTのPublisher/Subscriberを実装する場合、Paho Android Serviceライブラリを利用するのが便利そうです。このライブラリを利用したMQTTクライアントの作成手順をメモしました。 事前準備 android API 19が必要のため、あらかじめSDKマネージャで…
Antファイルに書いたJavaタスクをEclipseでデバッグ実行する手順をメモしました。Javaタスクをリモートデバッグ可能なように起動させ、Eclipseからデバッグ接続します。 適当なプロジェクトとクラスの用意 HelloWorldプロジェクトのsrcディレクトリ直下に下…
Antとは主にJavaなプロジェクトで使われているビルドツールです。使いこなせたらかなり便利なツールだということにやっと気づいたので、少しずつ勉強しはじめました。Antで何かを書く際の基本となる制御文を主にまとめました。 基本の形 projectタグの中にta…
List AとList Bに含まれている要素を比較し、一致する要素を抽出するような処理はHashMapを使えば高速になる場合があります。そのテクニックを教わったので紹介します。 テストデータの作成 次のような感じで、検証用のテストデータを作成します。listAの要…
ストラッツ?ナッツの仲間かな。 ダイコン?ふろふき美味しいよね。 そんな状態なのにStruts経験者としてプロジェクトにアサインするとか訳が分からない。。 というわけで早急にSAStrutsを覚えないとパコーンってされる状態になったので、勉強のためまずMac…
I18Nとは国際化(Internationalization)の略で、多様な言語や地域に適合できるようにソフトウェアを開発することです。I18Nは個人的に注目しているキーワードで、この設計思考が今後重要になってくると予感しています。ここでは、このI18Nの具体例としてtoLow…
javaのクラスにおいて、直接参照可能であるstaticなフィールド変数(もしくはメソッド)へのアクセス方法には2つの方法があります。 (A) オブジェクト名.フィールド変数名 (B) クラス名.フィールド変数名 どっちでも良いと思っていたのですが、可読性を高め…
XML文章を読み込み,その文章に書かれた要素情報を取得するJavaプログラムを作ってみました.前回のJavaでXML文書を記述しファイルへ書きこむで書いたプログラムを実行して得られたXML文章の要素や属性等の情報を抽出します. ソースコード import java.io.F…
XML文書をJavaで読み書きすることが業務で結構ありそうな気配なので,今のうちに予習の意味を込めてそのプログラムを書いてみました.ここではまず,XML文を記述し,それをファイルへと書きこむ処理について書いています. はじめに,XMLの用語統一のため,…
勉強会で文字列をBase64でエンコードするjavaのプログラムを作成する機会があったので,その時に書いたコードを修正して載せています.単純にエンコードするだけれあれば,sun.misc.BASE64Encoderを利用する方法がありますが,ここではエンコードする部分を…
単体テストでゲッター(getter)とセッター(setter)の動作確認をしなければならないことがあります*1.それらは構造が単純なので,ただデバッグによる目視確認でよいだけだと思いますが,それらが大量にある場合はデバッグでそれらを一つ一つ確認するのは手間…
SJC-P(Java Standard Edition 6 Programmer Certified Professional Exam)に合格しました.試験結果は60点中43点(合格点は35点以上)と,まぁさえない点数ですが,これでようやくいろいろと開放された感じです.SJC-P受験はなかなか良い経験になったので,…
コレクションを操作するためのクラスとして,java.util.Collectionsクラスがあります.このクラスにはListクラスの要素をソートするメソッドが2つ用意されています.それら2つのシグネチャは次の通りです. static <T extends Comarable<? super T>> void sort(List<T> list) static <T> void sort</t></t></t>…
ジェネリックスにはワイルドカード「?」を用いることができます.これを用いることで,型パラメータにスーパークラスやサブクラスを指定することができますが,その後の使用に制限が付きます. ワイルドカードを用いた次の記述を考えます.型パラメータにク…
Stringクラスのオブジェクトを作成する記述方法には次の2つがあります. (1) new演算子を用いた方法 (2) 文字列リテラルのみを用いた方法 例えば,"A"という文字列を表すStringオブジェクトを作る場合,上記はそれぞれ次のように記述します. String string1…
マルチスレッド環境下で,あるスレッドからスローした例外を別のスレッドでキャッチしたい場合,java.lang.Thread.UncaughtExceptionHandlerインタフェースを実装したクラスを用意し,このインスタンスを例外がスローされるスレッドにセットするということを…
共変戻り値とは,インタフェースを実装したメソッド,またはサブクラスでオーバーライドするメソッドの戻り値が,その戻り値のサブクラスでも良いという仕様です.JDK5.0以降にこの仕様が追加されました. 共変戻り値の実現を確かめるプログラムを次のように…
スーパークラスで定義したメソッド(もしくは抽象メソッド)にthrows指定があり,そのクラスを継承したクラスでそのメソッドをオーバライドする場合の記述方法についてまとめました. まず,次のようなメソッドがスーパークラスで宣言されているとします. v…
クラスにはstatic初期化子(staticイニシャライザ),インスタンス初期化子(インスタンスイニシャライザ),コンストラクタが定義できます.それらはインスタンス生成時に行いたい処理を記述することができますが,実行するタイミングが違うため注意が必要…
Javaにはコレクションといわれるフレームワークがあります.簡単に言うと,複数の要素を操作・管理する仕組みです.しかし,概要はだいたい分かっていますが,まだ不慣れなため実装したいときにすぐに使えないというのが現状です.そのため,すぐに使えるよ…
Javaのスレッドが実行するメソッドはsynchronizedキーワードを用いることによってロックすることができます.ロックはインスタンスメソッドとstaticメソッドにかけることができます. サンプルプログラムを以下に示します.Printクラスのrunメソッド内でイン…
Javaでは,日付と時刻の書式化(フォーマット)のためにjava.text.DateFormatクラスが用意されています.書式化の利用方法は,DateFormatクラスのオブジェクトを生成し,formatメソッドを呼び出すことで実現できます. オブジェクトを生成するメソッドは,大…