Rso's Jotter

日々の開発の知見のメモやその他雑記

Java

FutureTaskで別スレッドから値を受け取る。

Javaにはjava.util.concurrent以下にマルチスレッドでプログラムを実行するのに 便利なライブラリが用意されている。その中でスレッドを実行したとき、実行したスレッドの結果が他で欲しい場合に使える FutureTaskが便利なので紹介。 まず、値を返すスレッド…

java.lang.Process

Processを使って外部コマンドを使ってプログラムを動かしてその出力を利用するときにはまる罠 getInputStream()を使って外部コマンドの出力をとってこれるが、出力内容が多すぎる場合はブロックされて プログラムが進まなくなる。 一番手っ取り早い解決策と…

コンタクトの追加方法

Androidでコンタクトの追加に関するメモ Androidのコンタクトのアクセス方法はAPI Level5から変更されている。 古いAPIでの追加方法はこんな感じ ContentValues values = new ContentValues(); values.put(android.provider.Contacts.People.NAME, "ほげ た…

ジェネリクスあれこれ

今日少し話題になったジェネリクスについて少しまとめる。 この内容は他のブログでも詳しく紹介してるけど個人的な復習の意味も込めて。 まずクラスBとこれを継承したクラスDがあるとする。 class B{} class D extends B{}親クラスは子クラスの参照を保持で…

名前空間の優先度に関するメモ

パッケージ内のクラスとインポートしたクラス名が衝突した場合 以下の順に優先される 単一の型インポート ex: import java.util.ArrayList パッケージ内のクラス オンデマンド型インポート ex: import java.util.* java.lang以下のクラス 但しオンデマンド型…

SimpleDateFormatよく分からん

SimpleDateFormat使って日付をパースするときLocateがデフォルト(Japan)の時はParseExceptionが出て Locate.USにすると通る.なんでか分からん. 別に文字列のパターンはこっちが指定してるからロケールとか関係ないんじゃねと思うんやけど・・ //SimpleDate…

意外と便利なCollection

java.util.Collectionsで定義されているメソッド(やその劣化版)を 自分で作った奴は負け組

Javaでディレクトリ操作するためのメモ

Javaでディレクトリを操作するためにjava.io.File等のクラスが用意されていて,カレントディレクトリからのファイル一覧などは取得できるが,カレントディレクトリを移動する操作は含まれていない. そこでRuntime.exec()を使って外部コマンドに頼る方法を試…

Objectの持つメソッドに関するメモ

今日ちょっと話題に上がったけど即答できなかったのでメモ Objectの持つequalsメソッドの挙動 equalsメソッドをオーバーライドしていないクラスから equalsメソッドを呼ぶとどうなるかという話。 これは単純に比較するオブジェクト(インスタンス)が持つオブ…

enumに関するメモ

Eという名の列挙型に対する直接のスーパークラスはEnum 列挙型の中にフィールドやメソッドを定義できる public enum EnumTest { ONE(1), TWO(2); int data; EnumTest(final int i){ this.data = i; } } 列挙定数毎にも独自の振る舞いを定義できる enum Opera…

Javaのジェネリックスに関するメモ

型変数(Type Variable) Javaにおけるジェネリック・クラス宣言で用いる型変数(Type Variable)の文法は以下のとおり TypeParameter: TypeVariable TypeBoundopt TypeBound: extends ClassOrInterfaceType AdditionalBoundListopt AdditionalBoundList: Additi…

アノテーションのメモ

アノテーション型 アノテーションはアノテーション型の宣言によって使用できる。 アノテーション型は特殊なインターフェース宣言とみなすことができる。 宣言の一例 public @interface CopyRight{ String value(); } public @interface Data { int id(); Str…

めも

Javaでのファイル入出力.よく忘れるので書いとく

めも

Java1.4とJ2SE5.0の構文的な違い ジェネリクス アノテーション 拡張for文(foreach) staticインポート enum型 可変長引数メソッド(Varargs) Java1.3とJava1.4の構文的な違い Assert文

クラスパスの設定

Javaで外部のライブラリ使ってプログラム実行したい時に, ClassNotFoundExceptionとかの例外が出たときはクラスパスの設定がうまくいっていない ことが多い. いまさらやけど良く忘れるのでメモ.以下bashの場合の設定 % CLASSPATH=$CLASSPATH:"設定したい…

インスタンスイニシャライザ

インスタンスイニシャライザはコンストラクタより先に呼び出されるみたいだけど,何か使い道はあるのだろうか

ジェネリクス

ここの話めっちゃわかりやすい http://blogs.wankuma.com/nagise/archive/2008/08/20/153557.aspx

Collectionの作成

Generics使ったコレクションなりクラスなりのインスタンスをnew使って作るときは, ArrayList<String> somelist = new ArrayList<String>();みたいにのような型引数(?)が2回も出現してうざったらしいと思う人は, public static <T> ArrayList<T> createArrayList(){ return new Ar</t></t></string></string>…

JavaによるRTTI

実行時にインスタンスの型情報が知りたい ClassクラスのgetNameメソッドがinstanceof演算子を使えば何とかなる

System.out.printlnがめんどくさい

Javaで標準出力に何かメッセージをたくさん表示するとき System.out.println("something");何かしらでこの関数はよく使われてるけど微妙に文字数が多くてだるい. そんなときはSystem.outをstaticインポートしてやれば import static java.lang.System.out; …

Javaで外部コマンド呼び出し

import java.io.*; try{ Process process = Runtime.getRuntime().exec("ls"); }catch(Exception e){ //error } 標準出力受け取る InputStream is = process.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String …