日々常々

ふつうのプログラマがあたりまえにしたいこと。

Java

String の連結ネタの続き

以下のコードはどうなるでしょう。こたえは一番下。 String str = null; str += new Object(); System.out.println(str); http://d.hatena.ne.jp/irof/20110305/p1 の続きっぽい何か。 引っ張りすぎだと思わなくもありませんが、思うところは書いておこうと…

フィールドの隠蔽

http://d.hatena.ne.jp/irof/20110305/p1 でコメント頂いたネタ。 ちょっとしたクイズになるのかな。どんな結果になるか難なく判るなら、初心者*1からは脱していると思います。難なくじゃなくても、悩めるならたぶん大丈夫です。 public class Quiz { public…

Javaプログラマであるかを見分ける10の質問 に答えてみる

Javaプログラマであるかを見分ける10の質問 - やさしいデスマーチ"自称Javaプログラマを見分ける"や"問題なく答えられる"と、軽く答えるには高いハードルな気もしますけれど、今日時点の私のスナップショットとして晒しておきます。決して露悪趣味があるわけ…

関西Javaエンジニアの会いってきました

2011/3/2 にあった関西Javaエンジニアの会に行ってきましたー。 http://atnd.org/events/12307 http://togetter.com/li/107300 http://www.kanjava.com/home/event20110302 // メインセッション Javaニュース / id:cero-t 資料できた。 仕事早い。2011-03-02…

Java7 体当たり/strings switch

Switch に String が使えるようになるみたいです。 String in switch Statements switch に使えるのは int か Enum だったのですけれど、この度 String も出来るようになりました。単なる1クラスのはずなのに優遇されまくってる String さんです。 String re…

Java7 体当たり/Binary Literals, Underscores in Number Literals

数値系は2つまとめて。 二進数表記 Binary Literals 16進数の 0x の様に、2進数を 0b で書けるようになります。地味に便利かもしれませんね。勿論二進数なので 0 と 1 以外の数を入れるとコンパイルエラーになります。 // いままで byte j6byte = (byte)21; …

Java7 体当たり/diamond operator

Type Inference for Generic Instance Creation ジェネリックインスタンス生成時の型推論。私的に嬉しいダイアモンドです。コードの見た目がちょっとマシになるやつです。コードは読み物ですから、読みやすいほうが良いに決まっています。誰でも一度は書いた…

Java7 体当たり/try-with-resources Statement

JDK7 を使う準備が出来たので、体当たりします。Java7 での個人的に嬉しいのが try-with-resources Statement です。AutoCloseable (を実装したクラス)の変数をこの構文で初期化すると、勝手に close してくれるってものです。 ではさらっと使ってみます。…

Java7 体当たり/catch-multiple

続けて例外処理にぶつかってみます。Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking 複数の例外を一緒に処理出来るってやつです。複数の例外を投げるメソッドを使っても、大抵やりたい例外処理は同じだったりし…

JDK7を使ってみよう

先日、JDK7の開発者プレビュー版がリリースされました。 JDK 7 開発者プレビュー版のリリース | 寺田 佳央 - Yoshio Teradaどの機能が入るかとかいつリリースされるかとかが判らない時期はもう過去のもの。そろそろ重い腰を上げて、新しいJavaを知っておくの…

assertThat で Collection.isEmpty() を判定させたい

昔は assertTrue や assertEquals を使っていたのですが、時代は変わって assertThat が出来ています。使うことでのメリットは"テストコードの可読性向上"です。散らかりがちになるテストコードの可読性に関わるならば、使わない手はありません。 初めて見た…

文字列連結から見るシステム内で扱う型について

Stringの連結はそう簡単なものではない - じゅんいち☆かとうの技術日誌いまさらなのか、いまだになのか、文字列結合ネタからの派生です。実際、業務アプリケーションで文字列結合が致命的なパフォーマンス劣化を引き起こすようなことは無いと思います。です…

JUnit のテストメソッドを複数スレッドで実行する

JUnit4.8 のテストは、ぐるぐる巻きにされた Statement を転がすゲームです。ご存知 @Before, @After, @BeforeClass, @AfterClass も @Test も @Rule も全部 Statement に変換されて、それらの Statement でテストメソッドを丁寧にラッピングしてから実行し…

JUnit の @Rule で ExternalResource を使ってみる

@Rule うっかりTwitterでつぶやくと、無関係な方にメッセージを送ってしまって迷惑なJavaのアノテーションですが、JUnit4.7で追加されたらしい @Rule は結構便利な輩です。 乱暴に言うと、テストクラスに @Rule つけた MethodRuleフィールドを書いておけば、…

Javaソースコードリーディング 第2回

JUnitソースコードリーディングに行ってきました。感想を書くと "Groovyすげぇ" になりかねないので、さらっと書きます。 雑感 色々ありますけど、読んだら使い方がわかります。読まなくても使えるんですけど、読んでからだと使えてなかった気がするから不思…

Glassfish3.1を使ってみる(ついでにHudsonも)

JavaFX & GlassFish 合同勉強会をUstreamで見て、Glassfishを触ってみよーって気分になったので。 環境とか使ったものとか Windows7, Java 1.6.0_21, glassfish-3.1-web-b33.zip, hudson.war(1.386) ダウンロードとインストール まずダウンロードします。ダ…

T2 Framework コードリーディングに参加してきました

T2Framework コードリーディング 第1回に参加してきました。予備知識として持っていったのは、先日書いたGettingStartedとサンプルで挙動を見たのプラスアルファ程度です。なぜGroovyの記事が先になったのかは秘密です。おそらく"say"が原因とだけ言っておき…

Java Puzzlers: Scraping the Bottom of the Barrel(プレゼンの動画)

Java Puzzlers: Scraping the Bottom of the BarreltwitterとDevoxxのJava Puzzlersが見られます - 谷本 心 in せろ部屋を見て。 見始めて「意外と判る面白い」とか思った辺りで1時間ある事に気付いた(←今ココ)けど最後まで見て遅刻する。 RT @cero_t: と…

JavaCloudMeeting2010inKansai行って来ました

正直に言います。情報のインプットが多すぎて脳みそがハングアップ状態です。スケールアップはがんばるけど、おっつきそうに無いのでスケールアウトしたい。でも無理。にんげんだもの。 …えーと。 かなり必死に聞きながらメモってたから殆ど内容は思い出せる…

T2frameworkに触ってみた

T2frameworkですよ。マスコットかわいい。日本ではかわいいものが流行るらしいので、これは流行る。知らないだけでもう流行ってるのかも。ホント触りだけです。具体的にはGettingStartedに書いてるのを辿るだけ。書いてる通り進めれば問題ないはずなんだけど…

Tomcat6とOpenJDKとCentOSと

引き続きServersMan@VPSについて。概ね機嫌よく使っています。とは言っても、環境設定が中心というか、初期化ばっかりやっているのですが。 初期化してみよう MyDTIからログインして、契約中サービス→確認・変更→各種初期化とボタンを押していくと、サーバの…

関西Javaエンジニアの会(関ジャバ) '10 9月度行ってきました

関ジャバ行ってきました。期間を置くと書かないまま終わるのが前回証明されたので、ざーっと書いておきます。(ついったーの#kanjava) ■Spring Securityの使い方 id:jyukutyo 旧Acegi Security。Filterでユーザ認証と、ユーザに割り振られたロール毎のアク…

Javaでファイルのタイムスタンプ変更

Javaでファイルを扱うにはjava.io.Fileクラスを使用します。 Fileクラス自体はファイルそのものでもなんでもなく、ファイルまたはディレクトリのパスを持っています。Fileクラスのインスタンスはファイルシステムで管理されているファイルと対になるとは限り…

Listのループ

Listを全件ループして処理する場合、ぱっと思いつくところで3種類あります。 ループカウンタによるループ Iteratorによるループ 拡張for文によるループ(J2SE 5.0以降) 実装例 // なんらかのリストを取得する。 List list = getList(); // ループカウンタ f…

ジェネリック型

J2SE 5.0で追加されてもう6年以上が経過しているジェネリック型ですが、未だに使い方がよく判らなかったり、手間なだけと思っている方や、酷いものでは「@SuppressWarnings("unchecked")をつけるもの」って認識されていたりします。ざっくり説明するのにもっ…

JavaからOracle接続時にORA-12705が発生する

JDBC経由でOracleに接続する際、稀にORA-12705が発生するという事象がありました。環境は Java1.6 Oracle10gXE ojdbc14.jar です。ojdbc6.jar を使うべきなのかも知れませんが、現状この環境なのだから仕方がありません。 java.sql.SQLException: ORA-00604:…

カプセル化

今更ながらカプセル化とは何か、と言うところから書いてみる。読んで字のごとく、カプセルっぽくする事です。 では、カプセルとは何かと言う事を思い浮かべてみます。ぱっと思いつく薬のカプセルは、中に粉末とか粒とかが入っていて、そのままだと不味いとか…

オーバーロードの誤用の原因

オーバーライドやオーバーロードの誤用について書いてみたけれども、これらが発生する原因は(主に初心者向けに)文言の意味のみが説明されているためだと思います。とゆーわけで、オーバーロードについて解説しているサイトを漁ってみた。文言の説明だけの…

ソース内のコメント

Javaでも多くのプログラミング言語と同様にソース内にコメントを書くことが出来ます。 <蛇足:コメントの種類とか>コメントには、単一行コメントと複数行コメントがありますが、基本的に使うのは単一行コメントです。複数行コメントは滅多に使わない、と言…

オーバーライドの誤用

似た言葉だからと言うわけではありませんが、オーバーロードと同様にオーバーライドもしばしば誤用されます。もっとも。オーバーロードの誤用に比べると見かける頻度は低いのですが、これはオーバーライドが理解されていると言うよりも、そもそも継承があま…