日々常々

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

Java入門+α

ArrayListじゃなくListを使うという話

具象型ではなく抽象型で扱え、インタフェースを使え、みたいなお話に対して。 前置き Javaの話。他の言語だと話は変わります。 「こうするのが絶対的に正解」と言うものではありません。私の現在の選択の説明です。明日になったら違うこと言ってるかも。 主…

JavaBeansって言葉に煩わされない

JavaBeansって言葉を目にして、ふと検索してみたらあまりに酷かったので書いておこうかと。対象は「JavaBeansってなんだろ?」と思ってしまった初学者さん。でもそんな人って私のブログ読むんだろうか…… 今後は「このエントリ参照」にするつもりで書いてみる…

"ふつうのJavaコーディング"を話しました

2017/5/20にあったJJUG CCC 2017 Springで登壇させていただきました。 8回目の参加です。 毎回パワーアップしているなーと言うのは前回のブログでも書きましたが、今回は目に見えて参加人数が増えたんだなーと体感しました。 入れないセッションもありました…

コンストラクタのメソッド利用で注意すること

Java入門ではさらっと以下のように書いた、コンストラクタでインスタンスメソッドを実行することについて掘り下げてみます。 コンストラクタからインスタンスメソッドを使用することは可能ですが、避けたほうが無難です。 コンストラクタの実行中はインスタ…

匿名クラスとかローカルクラスとか

Java入門では割愛としていたローカルクラスと、ついでに関連の強い匿名クラスについて書いておきます。ネストしたクラスとかインナークラス(内部クラス)とかはそこそこしっかり書いたつもりなので、読んでいただけると嬉しいです。 Javaエンジニア養成読本…

カテゴリ「Java入門+α」を作ってみた

ブログにカテゴリ「Java入門+α」を作ってみた。 Java入門+α カテゴリーの記事一覧 - 日々常々 カテゴリ名の通り「Javaエンジニア養成読本のJava入門を読んだ人」に対して、+αになりそうなものを分類しております。 Javaエンジニア養成読本 [現場で役立つ最新…

Optionalの取り扱いかた

JavaSE8で追加されたjava.util.Optionalにはnullとの戦いに終止符を打ってもらいたいと思っているんですが、思ってるだけだと何も起こらないので、使い方とか思ったこととかを一通り書いておきます。 Optionalのファクトリメソッド Optionalのインスタンスメ…

Javaであまりしないコーディング

Java Advent Calendar 2014 - Qiita の9日目です。9日ったら9日です。 なんか難しいエントリが多い中ですが、空気を読まずに軽めでいきます。 Javaでは色々なコードの書き方ができるけど、実際あまりやらないよなーって思うコーディングについて、やらない理…

文字列連結と+演算子について整理しておく

何度か書いているけど、整理的な意味で。今後は「このエントリ参照」にするつもりで書いてみる。 文字列連結から見るシステム内で扱う型について - 日々常々 Javaプログラマであるかを見分ける10の質問 に答えてみる - 日々常々 String の連結ネタの続き - …

凝ったコードは凝っているように見えない

新しい技術を使ったり凝ったコードを書くとメンテするのが大変。新しく入ってくる人でも分かるように書く必要がある。この意見に対する上手い切り返しが出来るようになりたい。— Hidari。 (@Hidari0415) 2012年12月27日"凝ったコード"……はどうだろう。コード…

HogeれるところでひたすらHogeってみた #hogedriven

コンパイルは通る。一応。 hogeのセカイhoge駆動はこちら→ http://hogedriven.net 元ネタ Javaで、 class Hoge{ void Hoge(){ Hoge Hoge = new Hoge(); Hoge.Hoge();}} の各Hogeは何か説明させるのは、結構実力がはかれるw2012-11-21 14:18:23 via twicli

コメントについて考えてみた

やきに駆動2.0で話した内容です。 資料 コメントについて考えてみた 長いよ?

「xs.size() == 0 と xs.isEmpty() の違い」のツイートより

今日は教育資料にブチきれて xs.size() == 0 と xs.isEmpty() の違いについて新人の子に熱く語ってしまった。教育資料と違うことを言って混乱させて申し訳ない2012-09-06 22:34:07 via atig.rb @keita44_f4 サイズ取ると、例えばxsがリストだったりすると、…

nullを安易に使わない

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

オーバーライドとstaticメソッド

こんなコードがあって。 public class Hoge { public static void main(String[] args) { C c = new C(); c.method(); } } class A { static void method1() { System.out.println("A method1"); } void method2() { System.out.println("A method2"); } } c…

速習Collections

Collectionsをさっと紹介してみようと思って作ったので、晒し晒し。きっと世の中には超便利なものがあふれてるんだけど、OSSを使えなかったり、そもそもネットに繋がらない環境だったり、色々と理由があってその辺りのエコシステム*1が使えない状況はありま…

キョウミタコード

List list = hoge(); if (list.size() >= 1) { for (Object o : list) { // hoge } } ぱっと見て isEmpty 使えよと思ったけど、そもそも if 要らない…。 Annotation annotation = clz.getAnnotation(HogeAnnotation.class); if (annotation != null) { // an…

TreeSetにnullをaddする話

Java で TreeSet に null を add すると NullPointerException になります。*1 Airof:~ irof$ groovysh Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8 Groovy Shell (1.8.2, JVM: 1.6.0_26) Type 'help' or '\h' for help. -----------------------------…

equalsだけをオーバーライド

何と比べても同じって言うクラスAがあって。 class A { @Override public boolean equals(Object obj) { return true; } } こうすると? Collection set = new HashSet(); Collection list = new ArrayList(); set.add(new A()); set.add(new A()); list.add…

HashSetでequalsとhashCodeを使った問題

以下のコードを実行したらどうなるか。(1) Set set = new HashSet(); set.add(new Object()); set.add(new Object()); System.out.println(set.size()); (2) class A { public boolean equals(Object obj) {throw new RuntimeException();} } Set set = new …

enumあれこれ

EffectiveJava読書会で意外とenumネタで需要がある気がしたので、ちょっと書いてみます。内容的に目新しいものは無いはずの事を書きますので、理解されている方はツッコミ所探しでもしてください。 読み方 enumは enumerate か enumeration が語源になってる…

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

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

オーバーライドの誤用

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

オーバーロードの誤用

正しい使い方のされない道具は害悪にしかなりません。 鋏は正しく使えば紙や布をさくさくと切る事が出来るけど、変に傾けたりすると全くきれなかったり、普通の鋏で鉄パイプやらを切ろうとしても文字通り歯が立たない、さらに人に向けたりすると危険です。道…