Java

ローカル変数はアップキャストすべきではない

昨日はグレンリベットをストレートで十杯ほど飲んでしまったので、 今日は駄目かと思ったら意外とそうでもなかった。 で、書こうと思っていたことその1。 参戦はしないのでトラバはなし。 ローカル変数の型 #4 - odz buffer Re: Re: 型宣言は汎用的にすべき…

vectorとlistのメモリ効率

元々は、LinkedListとArrayListのメモリ効率のお話。 ArrayListとLinkedListのメモリ効率 - ori’s diary 404 Not Found メモリ効率というと通常、「メモリ空間をどれだけ占有するか?」というイメージで捉えられると考えられるため、 ArrayListが効率が良い…

そういえば

Java-jaいってきた。 第一回チキチキ 『ant から maven2へ 』〜血があつい鉄道ならばこまるよね〜 Maven2ということで、有用なお話を聞くことができた。 プロジェクト構成とデフォルト設定が決まっていて、 テスト環境があったり、 依存性を自動解決したりす…

Java-jaの4回目はおもしろいよ

LT楽しす>< あとで適当に書く。追記: 補足されてしまっているので、ここに追記。ということで、Java-jaの 「19時だよ全員集合!!ライトニングトーク大会(性的な意味で」 に参加してきました。タンパク質をまき散らしながら行動する人に似ているという事…

JavaBlackで始まる名前のあの人の意見をききたいと思った(敬称略)

via ときどきの雑記帖様。 このたび、仕事で初めてC++を前提にした設計をすることになったのですが、プログラミングも含め、 C++自体が全く初めてです(オブジェクト指向自体も初めてです)。あまり時間もないので、良い参 考書を探しております。特に、良い…

チキチキWicketについて

改めてWicketについて書きます。 JavaというとWebフレームワークは相変わらずStrutsという感じで、 SwingなどからJavaに入った人間としては違和感を禁じ得ないところがあるのだけれど、 Wicketは実にJavaらしいフレームワークだなぁ、と思った。 簡単に書け…

You、==もSyntax SugerにしちゃいなYO!(紅い人風)

odzさんが、 しかし、「+」 を使った文字列連結の Syntax Suger があるんだから、equals も Syntax Suger にすればよかったのにと、と割と本気で思う。 定数との比較 #3 - odz buffer と言われていて同意。どうせStringは+や+=は特別扱いなのだし、 ==も使い…

リテラルは先か後か

お休みだ、と思ってWeb閲覧をさっぱりしていませんでした。 すみません。で、うだうだしているうちに"hoge".equalsに色々と反応をいただきました。 ありがとうございます。nattowさんの C 言語のバッドノウハウであるところの「"=" と "==" を間違えたとき分…

(第一回チキチキ そろそろ Wicket について一言いっとくか)いってきました

まず書こう。Weketは面白そう。加えて、id:yone098さんとid:mopemopeさんのおられる会社、株式会社 Abby エビイは極めてやばいくらい敷居が高い。 レベルの高さに圧倒された。特にid:yone098さんはレベルが違いすぎた。 想像を絶するレベルだ。これほどとは…

"string".equalsってバッドノウハウなの?

最近↓みたいなコードをよく見かけるんだけどすんごい気持ち悪い。 if("hoge".equqals(stringValue)) { ... } 本当にequqalsなんてメソッドがあったらこええええええええええええええええええええー。 とかネタはさておき、よりSafetyな記述として、"hoge".eq…

dequeも忘れないであげてね(><)

Java 6 からdequeことArrayDequeが実装されています。 dequeって聞き慣れない! とか思うかもしれないですが「Double Ended Queue」で両端キューです。 STLではvector,list,dequeはよく使われると思うのですが、Javaではなかったんですね。 特徴としては、 …

ポストインクリメント不要論

何となく巷ではインクリメントがHOTなようだ。 ADDやSUBよりINCやDECの方がサイクルが小さかったんだ、 なんていう話はもうきっと過去の事なのだろう。 「Pythonで++xとかx++とかできる?」 でも語られる通り、すでに記法の問題なのだなぁ、これは。 と、そ…

JavaにC++のconstがあったらいいなぁと思った時期があったけど

やっぱり、mutableやconst_castと縁を切ることができないので駄目な気がした。 あったらいいなと思ったのはconst int hoge;とかじゃなくて、もちろんconstなメソッド。 constはメンバ関数にconstなメソッドであることを宣言することで、 「変更不可」を表し…

ぷりいんくりめんと? ぽすといんくりめんと?

via 低学歴無能俸給生活者の数学コンプレックス払拭日記さん。 Xをインクリメントすっとき、++X と書く? X++と書く? ってオハナシ。 僕は++X派。 ズレてますよ C++ならぷり。(主にパフォーマンス的な理由) Javaならぽすと。(主に見た目の理由) Pythonに…

「参照渡し」と「参照の値渡し」の差

via ときどきの雑記帖さん。 C++とJavaの参照は参照でも意味(扱い)が違うのではまりますよね、と。 call by reference と call by value を (なにがしかの)値を書き換えられるかどうかだと覚えているとはまりますよね。 と。 404 Not Found で、再確認の意…

あきれたソース

Hoge[] hoges = hogeService.getAllHoge(); TreeMap<String, Hoge> tmap = new TreeMap<String, Hoge>(); for (Hoge hoge : hoges) { tmap.put(hoge.getValue(), hoge); } int i = 0; for (Iterator<Entry<String, Hoge>> ite = tmap.entrySet().iterator(); ite.hasNext();) { hoges[i] = ite.next().getValu</entry<string,></string,></string,>…

連結リストは遅いの?

Java(5.0)の連結リストは遅いよ、という話があったのでちょこちょこと書いてみます。リストといっても、大きく分けると二つになります。 配列式 連結式 配列式はメモリを連続的に確保した普通の配列の拡張のようなものです。 連結式は要素同士をポインタで…

Cとかアルゴリズムなんて超うんこ

と定時後の雑談中に言われたので、うへぇ、と思って書いてみる。 論旨は、Java(使い)はアルゴリズムを隠蔽しているので、 メモリの使い方とか、各種アルゴリズムがある操作をした場合に定数、対数、線形だとか、 知らなくても良いということなんだけど、 …

オブジェクト指向とはなにか、カプセル化とはなにか

Exceptional C++ Styleの記述に非常に感銘を受けたので引用しておきます。 オブジェクト指向におけるカプセル化の位置づけ オブジェクト指向による設計とプログラミングにおいて、それはどれくらい重要か? カプセル化は、オブジェクト指向プログラミングの…

こんぱいらこんぱいら

最近久しぶりにJavaCCを始めたら、Javaの理解度が上がったせいかより分かるようになっていた。(気がする) ということで、習作として簡易スクリプトをつくってみることにする。 構文解析とか地味なことが好きだ。 とりあえず、ifは実装してみた。functionを…

多重ループから抜けるとき

そういえば、Javaって多重ループから抜けるときラベル使えるのにあまり見かけないですね。 int[][] bitmap = { { 0,0,0,0,0 }, { 0,0,0,0,0 }, { 0,0,1,0,0 }, { 0,0,0,0,0 }, { 0,0,0,0,0 }, }; END: for (int y = 0; y < bitmap.length; y++ ) { for (int …

カプセル化と情報の隠蔽が別物で、カプセル化=クラスそのもの?

まとめること=カプセル化 隠すこと=情報隠蔽カプセル化ってのは、フィールドとメソッドを一緒に定義する、ぶっちゃけクラスそのものの機能ですね。 2007-03-09 - 人類みんなごくつぶし カプセル化=クラスそのものだなんてあり得ないと思います。(それは…

re:クライアントは難しいねえ。

クライアント側は酷い有様に対する言及です。 問題はクライアント側です。アプレットとかアプリケーション。一般的な使用を想定すれば想定する程、自力でJREをメンテできないユーザのことを考える必要がでてきます。一部のメーカー製PCで、1.4を入れて出荷し…

コンストラクタを愛せよ

もうみてらんない! っていうソースに出会ったので意気消沈。 public class abstract AbstractFooBar implements Bar { String id; String name; boolean autoHoge; ... public AbstractFooBar(int key) { this(false,key); } public AbstractFooBar(boolean…

<a href="http://www.igda.jp/modules/xeblog/?action_xeblog_details=1&blog_id=384">Re:つRetrotranslator</a>

ご紹介ありがとうございます。 集合やマップによる操作を考えると、コレクションを多用するわけですが、AutoboxingとGenericsがないとキャストまみれで酷いことになるので、5の文法で書きたいわけです。保守性を考えても、適時、5の文法に書き直すのが吉な気…

拡張 for 構文ってあんまり好かれてないのかな

今は仕事でJ2SE5.0を使っていることもあって、for文は拡張forで書いているんですが、あんまり拡張forを使っている人みないですね。 Hoge[] hoges = hogeDao.selectByFooId(fooId); for( Hoge hoge : hoges ) { hoge.xxxx(); } とか書けてとても便利なのです…

なぜpublicな領域にjspを置くのかという疑問

今、触っているソースコードでStrutsを使っているのにpublicな領域にjspがあるのが疑問。 "/WEB-INF/jsp/hoge.jsp"とか、に置いておいて、 そのパスに対してfindForward("success"); なりなんなりすればよかとじゃないですかね。 慣習ですかね。

あんた、StringUtilsつかってんじゃん!!!

if (StringUtils.isNotEmpty(user.getPassword())) { StringBuffer buf = new StringBuffer(); for (int i = 0; i < user.getPassword().length(); i++) { buf.append(" "); } form.setPassword(buf.toString()); } って、 if( StringUtils.isNotEmpty( user…

脊髄反射でinterfaceを書く必要はない……と思うが

今触っているソースはなぜか脊髄反射のようにinterfaceとImplが対応している。 class HogeServiceImpl implements HogeService { てな感じで、数あるロジックに対し一対しかないのにわざわざinterfaceと実装が存在する。 これって、意味あんのか? ……と思わ…

struts-config.xmlが大渋滞なので

S2Strutsも入っていることだし、せっかくだからannotationにするっさ。 と思ってPythonでstruts-config.xmlを参照して*.javaのファイルの中にannotation(@StrutsActionとか)をつっこんでくれるスクリプトをかくかく。 Pythonの練習にもなってちょうど良い。…