Java
eclipse3.7 SR1 で正式に Java7 への対応がアナウンスされました。 Eclipse Announces Full Support for Java 7 主な変更点は、コンパイラと主要なツール(コンテンツアシスト、クイックフィックスなど)の Project Coin への対応、とのこと。 これでやっと…
先日の記事(Java7 で String クラスがリファクタリングされていました - 地平線に行く)に続いて、File クラスを調べてみました。前回ほどの変更はありませんでしたが、それでも着実にソースがよくなっていました。 listFiles メソッド - 新文法の積極活用 …
先日、ついに JavaSE 7 がリリースされました! そこで、早速ダウンロードして、Java7 のソースコード(src.zip)を Java6と比較してみたところ、公表はされていないのですが、ちょこちょことリファクタリングされていることがわかりました。 そこで、そのうち…
Java7 の try-with-resources と C# の using は、どちらも同じだと思っていました。 でも、複数のリソースを扱うときの書き方が全然違っていました。 // Java7, ひとつの try の中に複数の宣言を書く try(BufferedReader reader = Files.newBufferedReader(…
まだ公式リリース前*1ですが、一足早く Java7 でアプリを作ってみました! PopupTail Java7 で実装した、タスクトレイ常駐型の Tail です(tail -f と同じ機能です)。 ファイルに変更があると、ポップアップでお知らせします。 ログの監視などに、ぜひご利…
7月28日は Java7 のリリース日*1。 その前にちょっと遊んでみようと思ったら、eclipse がまだ対応していませんでした。 2011年9月ごろ(eclipse 3.7 SR1 で対応)になるそうです。それまでは、IntelliJ IDEAか、NetBeansを使うしかなさそうですね…。 2011年1…
よく使うJavaのクラスは、たいてい引数なしコンストラクタを持っています。 List<String> list = new ArrayList<String>(); Calendar calendar = new Calendar(); でも、引数なしコンストラクタを持たないクラス*1も結構あります。 InputStream inputStream = new FileInputS</string></string>…
よくごっちゃになってしまうので、Java と C# の命名規約をざっとまとめてみました。 種類JavaC#(.NET) クラスPascalPascal インタフェースPascal(例:List)"I" + Pascal(例:IList) パッケージ / ネームスペースCamel(例:java.net)Pascal(例:Syste…
id:backpaper0さんが内部クラスはエンクロージングインスタンスが無くてもインスタンス化できる?と書かれていました。 Inner.class.getConstructor(Outer.class).newInstance((Outer) null); 実行してみたところ、確かにインスタンス化できました。 でも、…
昨日の「条件演算子(三項演算子)で、:の左側と右側に共通のインタフェースを持つ別のクラスを書く」についての追記です。C#だと、以下のように条件演算子のふたつの式が共通の型を持っている場合でもコンパイルエラーになりますが、Javaだとちゃんとコンパ…
以前、ローカルファイルのまま JavaScript を動かそうとすると、セキュリティエラーにひっかかるということがありました。 ちゃんと Apache とかのサーバを用意して動かせばいいんですが、そこまで手間をかけるのも面倒・・・。そこで、こんなの作ってみまし…
たまに、Java の Enumeration を使ったサンプルを見かけることがありますが、その大半が Iterator と同じようなアクセスの仕方をしています。 NetworkInterface nic = NetworkInterface.getByName("eth0"); Enumeration<InetAddress> nicAddress = nic.getInetAddresses()</inetaddress>…
結論:JavaでPingを打つには、外部プロセスを使う。 public class NativeProcess { /** ping のタイムアウト(ms) */ private static String TIMEOUT = "3000"; public static void main(String... args) throws IOException, InterruptedException{ boolean …
前に書いたソースを見直していたら、こんなものがありました。 (指定のデータをクライアントに流すだけのサーブレットです) OutputStream out = new BufferedOutputStream(response.getOutputStream()); InputStream in = new BufferedInputStream(new Byt…
先日の2ちゃんねる壊滅騒ぎ、そのまとめで気になったのがこの一文。 ・ただ、/test/sss以下の全ファイルのリストがApache(サーバーの内部ソフト)の設定ミスで見れるようになっていた。 モペキチまとめwiki - 2ちゃんねる壊滅? Index of (ディレクトリ内…
「(増補改訂版)Java言語で学ぶデザインパターン入門【マルチスレッド編】」を読み終わりました。 もともと、7月ぐらいに今の仕事でデッドロックが発生したときに買ってななめ読みしていたのですが、今月に入って改めてちゃんと読み直しました。 せっかくなの…
「x += 3;」は「x = x + 3;」とは違うということを知りました。 きっかけ あるメソッド(foo)の実行時間を確認しようと、こういうソースを書きました。 int sum = 0; for(String arg : args){ long start = System.currentTimeMillis(); foo(); long end = Sy…
public static void main(String[] args){ System.out.println // もちろん、ふつうはこんなソースを書いたりはしません。 // でも、いつも当たり前のようにメソッド名の直後にかっこを書いていたら // それがルールであるかのように錯覚してしまっていまし…
Java の HashSet のアルゴリズムを確認しようとクラスの中身を見てびっくり。 HashSet は、処理のほとんどを HashMap へ委譲するだけという超簡単なアルゴリズムでした。 コンストラクタはこんな感じ。 public HashSet() { map = new HashMap<E,Object>(); } メソッド</e,object>…
Javaの特徴の一つにチェック例外があります。 IOException や SQLException なんかが代表例です。 自分がチェック例外に遭遇した時にどのように対処しているかをまとめてみました。 throwsする public String read(File file) throws IOException 最も多く行…
Javaで、たまにリストと配列を変換したり、コピーしたりするときがあります。 でも意外とやろうとするたびに忘れてしまうので、ざっとまとめてみました。 (解説を分かりやすくするために、ジェネリクスを使用していません) リスト から 配列(変換) publi…
Java7 には Objects クラスが追加される予定になっています*1。 Arrays や Collections みたいな、ユーテリティクラスですね。 ざっと調べてみました (といってもAPIを引用&翻訳*2しただけですが・・・)。http://download.java.net/jdk7/docs/api/java/util…
Javaでは、プロパティの設定によく Properties クラスを使います。 このクラスは、コンストラクタで別のプロパティをデフォルト値として指定することができます。 public Properties(Properties defaults) 指定されたデフォルト値を持つ空のプロパティリスト…
Hudson勉強会でゆかわさんが紹介していた「Hudsonを用いて適当に?テストする方法」を実践してみました。Hudson study-zenView more presentations from Wataru Yukawa. 自分のプロジェクトでは「データベースアクセス用のクラスにSQLとその実行メソッドを書…
Javaの for-each 文 (拡張for文) 内で remove をする方法はありません。 Sunの解説でもこの点は明記されています。 for-each ループは好きなときに使えます。使用すればコードがわかりやすくなりますが、どこででも使用できるわけではありません。たとえば、…
StrutsのEmailバリデータ(正確には、Apache Coomons Validator)を使っていたら、予想外の挙動にすこしびっくりしました。 前後に空白が入ってもいい test@example.com これは、最初に空白が入っていますが、有効と判定されます。 コメントが入ってもいい (…
Java5 から Closeable が実装されていました。 A Closeable is a source or destination of data that can be closed. The close method is invoked to release resources that the object is holding (such as open files). Closeableは、閉じることことの…
Javaの標準API(java.*, javax.*)に含まれるメソッド名を分析して、よく使われている単語や接頭辞を抜き出してみました。 これで、もうメソッド名を決めるのに迷わない!はず…。 接頭辞 順位 単語 意味 代表例 出現回数 1 get 取得する List#get() 21198 2 …
柴田 芳樹さん*1のブログを読んでいて、ふと目にとまったコメントがありました。 結果として、APIの実装コードでは不正パラメータの検査されていない。あるいは、検査はしているが例外をスローすることなく、単純にリターンしている。※ (中略) ※ 検査はし…
メール送信機能をJavaで実装したところ、なぜか件名が文字化けするという問題にぶち当たりました。 しかも、不思議なことにWindowsからだと大丈夫なのに、Linuxからだと化ける・・・。 最初は文字コード指定を間違えたと思っていろいろ確認したんですが、特…