Java Day Tokyo 2016 のセッション3-Eの資料です。 Java8, Java9の新機能がシステムの設計にどういう影響があるのかを考えてみました。Read less
![Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか](https://cdn-ak-scissors.b.st-hatena.com/image/square/4b50d47559bd9e6522055ba2d6f68f7143120fb5/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fupdateyourdesignpatterninjava-160527001649-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
タイプアノテーション これまでアノテーションはクラスやメソッドの宣言に対してのみ付与することが可能だったが、Java 8からは変数の型やジェネリクスの型パラメータに対しても付与することができるようになった。この機能は「タイプアノテーション」と呼ばれる。 タイプアノテーションの利用例としてはChecker Frameworkがある。これはコードの様々な個所にアノテーションを付与しておくことでコンパイラだけでは不可能な高度な型チェックを行うことができるというものだ(コマンドラインからの実行に加え、EclipseやIntelliJ用のプラグインも用意されている)。 例えば以下のコードはgetObject()メソッドが常にnullを返すため、実行すると最後の行でNullPointerExceptionが発生する。 Object getObject() { return null; } @NotNu
Java is one of the most popular programming languages around, but no one seems to enjoy using it. Well, Java is actually an alright programming language, and since Java 8 came out recently, I decided to compile a list of libraries, practices, and tools to make using Java better. This article is on Github. Feel free to contribute and add your own Java tips and best practices. Style Structs The Buil
FindBugs の @NonNull アノテーションで引数や戻り値が null でないことを明示すると、可読性もよくなるし、間違って null の引数を指定したり、null を返すコードを書くと、FindBugs の指摘が入るので、不要な null チェックの冗長なコードが減少する。 import edu.umd.cs.findbugs.annotations.NonNull; .. @NonNull public String get(@NonNull String key) { .. return .. } .. 逆に、どうしても null の引数指定や null の戻り値が発生する場合は @CheckForNull アノテーションを付けて null チェックコードを書くように明示することができる。こちらは null チェックがないと FindBugs が指摘してくれる。 impor
Eclipse Junoでnull解析を行う Eclipse Juno(4.2)から、@Nullableが付いたパラメータを、そのメソッド内でNullチェックしていない場合はwarningやerrorにすることが出来るようになります。 @Nullable Nullableアノテーションがついているパラメータは、そのパラメータにはNullが渡されることも許容するという意味になります。 なので、メソッド内で値のNullチェックを行う必要があります。 例えば、以下のようなコードを書いたとします。 import static org.junit.Assert.assertEquals; import javax.annotation.Nullable; import org.junit.Test; public class NullableTest { @Test public void test
int型の配列を使うときは以下のようにします。これは問題ないですね。 int[] array = new int[10]; // (1) しかし自分で定義したクラスのオブジェクトの配列を使う場合は、同じようにしてもうまくいきません。 class NewClass{ int a; int b; } public static void main(String[] args) { NewClass[] dim = new NewClass[3]; // (2) dim[0].a = 1; dim[0].b = 10; dim[1].a = 2; dim[1].b = 20; dim[2].a = 3; dim[2].b = 30; } (1)と同様に(2)と書いたのに、これを実行するとNull Pointer Exceptionが発生してしまいます。 調べたところ、(2)は、オブジェクトを入れ
Precondition checking like null-checking is very important element for program, but sometimes it becomes boring because it's a defensive technique and far apart from our purpose -- hacking. nullチェックのような前提条件確認はプログラムにおいて非常に大切な要素ではありますが、防御的であり目的を実現するためのコードではないため、時につまらない作業になりがちです。 public MyClass(String name) { if (name == null) { throw new IllegalArgumentException(); } this.name = name; } Yes, I know
っていう話を書こうと思ってたら、以前書いてた(cf. 前提条件を破った場合、どのような挙動をするのか? - 都元ダイスケ IT-PRESS) 上のエントリにも書いたのだが、自分はこういう時IllegalArgumentExceptionを使うようにしている。そして、commons-lang v2.6 をよく使っていたので、その中の Validate#notNull を利用してnullチェックをするのが自分のスタイルだ。 しかし、いい加減commons-lang v3系に移行しようかな、と考えて色々触っていたのだが、v3から Validate#notNull の仕様が変わり、NullPointerExceptionを投げるようになったのだ。 といった辺りの俺周辺タイムライン → Javaでnullを受け付けないメソッドにnullを渡したらどうなるべきか - Togetter で、いくつかのラ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く