よしたろうブログ

駆動設計・アーキテクチャ・変更容易性とかの話が好きです。

Java基礎

Javaのラムダ式を順序良く理解するための基礎

ラムダ式を簡潔に表すと 「ラムダ式は関数型インタフェースを実装した匿名クラスの簡易的な記述法」です。 匿名クラスで行っていたインスタンス生成がラムダ式でできるようになりました。関数型言語では関数をオブジェクトとして変数に代入したりメソッドの…

Secure なコーディングをする為には、参照の共有・複製・不変と可変について知っておかなきゃいけないって話

本記事ではセキュアなコーディングを行う上で必要な知識を、別名参照問題を入り口にしてまとめています。 言語には Java を用いていますが、Ruby・Python・PHP であればほとんど当てはまる様な内容かなぁ、と思います。 具体的には以下の事柄と関係するセキ…

不変(Immutable)オブジェクトについて

こちらの記事は以下の記事にて他のトピックと共に統合的に扱っています。ちょっと長いですが、多角的により深く、ある程度網羅的にまとめています。こちらの方がより深い理解が得られると思いますので時間がある場合はこちらを参照してください。 yoshitaro-…

「プリミティブ型」と「参照型」はメモリ管理の仕組みが異なる【Java】

前記事ではJava における引数などの評価戦略は「値渡しのみ」であり「参照渡し」は存在しないと紹介しました。これに加え本記事では、データのメモリ管理上で具体的にどの様なことが起きているのかを紹介します。

Java に参照渡しは存在しない。値渡しだけが存在する。

Javaの評価戦略は値渡しです。 Javaでいう参照値(reference values)・参照(references)を引数で渡しても、値渡しで評価されます。参照渡しができるという記事や解説がよく見られますが、Java には「参照渡し」はありません。確かに配列やオブジェクトの場合…

最近の学びを簡単にご紹介~SOLID・カプセル化・宣言型プログラミング・不変・共変・反変・ROA・REST・スキーマ駆動開発など~

SOLID カプセル化と宣言型プログラミング 不変・共変・反変 HTTPとURI HTTPメソッド ROAとREST 安全性と冪等性 スキーマ駆動開発とAPI設計 プロダクトや組織の文脈を把握する まじアウトプットは大事!!

コレクションとジェネリクス~不変と共変~【Java】

この記事ではコレクションとジェネリクスを使いこなせるようになるための基礎知識をまとめています。ラムダ・ストリーム・オプショナルを使いこなすためですね。 目次 コレクションとは? コレクションの種類 それぞれの特徴 List Set Map 配列とListの使い…

【徹底解説まとめ】 継承、抽象クラスとインターフェイスの違い、ついでにSOLID【Java】

誕生した背景には必ず問題があり、そのソリューションとして道具が登場します。その道具は、その問題を解決するための機能以外のことはできない方がいいのです。本来の目的以外の余計な役割を持たせれば、他の道具と目的が重複すかもしれません。無駄であり…

『決定板:Javaの継承と抽象化~ 第4部 抽象クラスとインターフェイスの使い分け』

Javaにおけるインターフェイスと抽象クラスの違い・使い分けを、本質的かつ網羅敵に解説した唯一無二の記事です(誇張)

【Java】for文・拡張for文 どっちを使うべき?

前置き コレクション毎の繰り返し処理で、for文と拡張for文どっちを使うべきか?について書きました。Iteratorパターンを使用している 拡張for文 を使うべきという話です。 本記事において集約オブジェクトとは 配列 コレクション を含めます。上記の通り、…

【Java】ラッパークラスの意義について

ラッパークラスとは? 各プリミティブに対応したラッパークラス オブジェクトとして扱えると何がいいの? オートボクシング(Autoboxing)・アンボクシング(Unboxing) 注意点 参照型について ラッパークラスとは? 基本(プリミティブ)型である int や do…