Java

Oracle JDBCドライバでLONG列にアクセスする際の注意点

LONG列なんかはもう非推奨で普通はBLOB使うからほとんど問題にはならない内容なのですが。Oracleのデータディクショナリテーブルの一つALL_TAB_COLUMNS(USER_TAB_COLUMNS)のDATA_DEFAULT列はなんとLONG型で、これにアクセスするときにこの問題にはまって2…

scheduleAtFixedRate() を実行中のタスク側から停止する

Javaで、一定時間ごとに実行するプログラムをかく必要があったのでjava.util.concurrentのScheduledExecutorServiceを利用してプログラムを書いた。一定時間ごとの実行についてはscheduleAtFixedRate()を使って難なく書けた。 しかし、このとき実行されるタ…

クラスの遅延初期化方法

普通、シングルトンなクラスを作るとき、ふつう初期化は以下のようにする public class Hoge { private static final Hoge hoge = new Hoge(); private Hoge() {} public static Hoge getInstance() { return hoge; } } でも、これだとクラスHogeを参照した…

クラス継承での注意事項

継承クラスでコンストラクタが呼ばれる順番は以下の通り 親クラスのコンストラクタ実行 子クラスの変数初期化 子クラスのコンストラクタ実行 なので、以下のような抽象クラスを作ってしまうと、正しく動作しない public abstract class hoge { public hoge()…

かっこいいfor文

ツリー構造を、ノードからルートまでたどって処理をするプログラムを書くとき、いままでは以下のように書いていた。 Node nd = currentNode; while(nd != null) { queue.add(nd); nd = nd.parent(); } 今日、本を読んでいたら、以下のように書かれているのを…