タグ

javaとtipsに関するlearnのブックマーク (12)

  • Helios debut!! - R42日記

    Eclipse3.6のHeliosがリリースされました。 新しい機能の解説はコチラに譲るとして、とりあえず使い勝手は3.5と大きく変わらないです。 各種プラグインも、特に問題なく動作している模様。 目立った点としては、コンパイラの精度が良くなったのか、これまで警告として検知出来なかったケースでも警告を検知できるようになりました。 例えば@Overrideが付いていないケースを正確に報告してくれるようになりました。 これまでは、検知できないケースが多々あったのですが。 コンパイラ関連で言うと、以下に示す変更点がインパクト大きいですね。 これは、広範囲にわたってソースの修正が必要になりそう。 rawタイプを扱うケースへ@SuppressWarnings("unchecked")を適用できなくなった ジェネリクスにおける必要悪である@SuppressWarnings("unchecked")です

    Helios debut!! - R42日記
  • Java言語で固定要素のListを初期化する際のイディオム - 達人プログラマーを目指して

    Generics(総称型)のプログラミングはJava言語(バージョン5以降)で最も習得が困難な文法*1の一つです。私自身、時々どうやって文法エラーを修正すべきか悩むこともあるくらいで、実際かなり複雑です。Genericsの導入は賛否両論なので、実際Javaに導入したのは間違いだったという議論もある一方で、静的な型安全性を重視するプログラマーもいます。 好き嫌いはともかくとして、Javaプログラマーとしては、一度きちんとGenericsの正しい使い方(=使い勝手のよい総称型やメソッドの正しい定義方法)について勉強しておいてもよいと思います。 Java Generics and Collections: Speed Up the Java Development Process 作者: Maurice Naftalin,Philip Wadler出版社/メーカー: O'Reilly Media

    Java言語で固定要素のListを初期化する際のイディオム - 達人プログラマーを目指して
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • [tech][Java]Unix系JavaでRuntime.execをつかうときの落とし穴 - Kazumi007の日記

    JavaではJVMやライブラリの実装がWindowsMacOSLinux等で共通の実装だけを採用する方針だったりします。 なので、シンボリックリンクをはったりといったような、使いたくなるような気の利いたOSの機能はAPIでは用意されていません。しかたがないので、lnコマンドといったような外部コマンドを呼び出したい気分になるのですが、Unix系JavaでRuntime.exec()を使って外部コマンドを呼び出す際には注意が必要です。意外な落とし穴が待っています。 もし今サーバーがUnix系OSでJavaでRuntime.exec()を使おうと思っているなら、今すぐ別の方法を検討してください。後でとんでもない目にあいますよ。 いったいどういうことなんでしょうか?とりあえず、こんなプログラムを考えてみます。 package org.kazumi007; import java.io.Buff

    [tech][Java]Unix系JavaでRuntime.execをつかうときの落とし穴 - Kazumi007の日記
  • getEnclosingなんちゃら。 - 設計と実装の狭間で。

    LoggingAPIを使っている皆様におかれましては、ガード節をキチンと記述しておりますでしょうか? こういうやつですね。 if(LOG.isDebugEnabled()) { LOG.debug("hogehoge"); } 毎回記述するのが面倒な上に、コードの見栄えがあまりよろしくありません。 ガード節を書かないと、実行時におかれましては、 最終的にはどこにも出力されない巨大な文字列が、 不思議空間に浮かんでは消え、浮かんでは消えるなどしているかもしれません。 というワケで、コンパイラにガード節を記述して貰えば良いんじゃね?的な事を考えてみた。 public static void main(String[] args) throws Exception { assert debug(new a() { public boolean b() { // assert する為の真偽値を演算

    getEnclosingなんちゃら。 - 設計と実装の狭間で。
  • ジェネリックなクラスの階層を遡って適用された具象型を得る

    イレイジャではジェネリクスの何が消えるのかにて親クラスを継承する際に投入しているジェネリクス型パラメータはclassの情報として残っていることを述べました。 これを利用すると、 public class A<X> { public class B<Y> extends A<Y> { public class C extends B<String> { といった継承階層があった場合に、C.classからA.classの<X>にどのような具象型が適用されているのか(上記例ではString型)をリフレクションで取得することができます。 Aの型パラメータのプレースホルダ<X>を取得 Bでsuper-classの型パラメータに渡されたTypeを取得 2のTypeが具象型ではなく型パラメータ<Y>なのでさらにサブクラスを走査 Cでsuper-classの型パラメータに渡されたTypeを取得 B<Y>の

  • UTF-8 ドキュメントの BOM を削除する (ビジネスSNS・ソーシャルグラフのSBI Robo)

    先日 UTF-8 で記述したシェルスクリプトが実行できないということがありました。BOM が付いていたことが原因だったのですが、その削除に関するメモを残しておきます。 BOM の確認は UTF-8 の場合、先頭 3 バイトの 0xEF 0xBB 0xBF を確認します。 $ od -t x1 hoge.xml 0000000 ef bb bf 3c 78 6d 6c 20 76 65 72 73 69 6f 6e 3d ... VIM の場合は、 :set nobomb :w にて、BOM を消して保存します。 perl の場合は、 $ perl -0 -i.bak -pne 's/^\xEF\xBB\xBF//' hoge.xml となります。-0 はレコードセパレータ $/ を 8 進数で指定しますが、指定しない場合はファイル全体を読み込みます。 BOM 付きと既に分かっている場合 t

    learn
    learn 2009/09/28
    javacだとBOMがついているとコンパイルエラーになるので対応必要
  • toString - cypher256's blog

    共通の親エンティティに toString を実装し public フィールド値を出力されるようにすれば色々便利です。これは特に S2JDBC のエンティティに限ったことではありません。 @MappedSuperclass public class AbstractEntity implements Serializable { public String toString() { return <フィールドの値を連結した文字列>; } } public class Table1 extends AbstratEntity { public Long id; public String xxxCd; public String xxxNm; } Table1 table1 = ・・・; log.debug("table1の中身:" + table1); DEBUG 2008/01/01 ta

    toString - cypher256's blog
  • Eclipse で Pluggable Annotation Processing API - taediumの日記

    Pluggable Annotation Processing APIJava6から導入されたAPIです。これをつかうと、コンパイル時にアノテーションを読んでコードを生成したり、検証したりできます。javac実行時に処理できるのはドキュメント見るとわかるのですが、実はEclipseのビルド時にフックできます(Eclipseのエディタ上にエラー表示とかもできる)。Eclipseで動かそうとして情報をあさったんですが、なかなかわかりやすいものが見つからなかったのでここに書いておきます。実は簡単なんですけど、それがどこにも見当たらなかったんですよね。 Pluggable Annotation Processing APIの説明サイトはいくつかあって最後にリンクはっておきました。 EclipseはJava6で動かそう まずは、EclipseがJava6でうごいていることを確認するといいです。

    Eclipse で Pluggable Annotation Processing API - taediumの日記
  • 第13夜 Java SE 6はnative2ascii使わなくていいのはみんな知っていると思うが - しんさんの出張所 はてなブログ編

    みなさまJava SE 6への移行は進んでおりますでしょうか。もう7月になったということはJava2 SE 5.0のサポート期間は4ヶ月をきったということですよ。 そこで今後はJava SE 6での地味な改良をあげていきたいと思う。派手な話題はみんな飛びつくけど、地味な改良が実はうれしいのだ。 最初はみんな知ってる小ネタから。 J2SE 5.0からPropertiesがXMLを扱えるようになったのはご存知のとおり。それまでは7bitなファイルしか扱えなかった。理由はPropertiesクラスが1.0のときに登場した古参クラスであるということ。1.0はマルチバイトが対応しておらずみんなこんな感じだった。そもそもHashTableを継承してるのはどうよ、とかいいたいことはたくさんあると思うのだが、Javaが発表されたのが14年前。その前からあったことを考えると仕方あるまい。C++ですら標準化さ

    第13夜 Java SE 6はnative2ascii使わなくていいのはみんな知っていると思うが - しんさんの出張所 はてなブログ編
  • 1