Java

Java の interface method に public や abstract を宣言してもよいか

interface MyInterface { public abstract void myMethod(); // public と abstract の宣言 } Oracle の Docs より 「してもよいが、冗長なので奨められない」 意訳(一部) interface のメソッドは暗黙のうちに public である interface のメソッドは暗黙のう…

Dependency Injection

「DI パターン」と これを利用した「DI コンテナ」ってのがある 「DI コンテナ」使いたいけど「DI パターン」って何?状態 > 荒いけどまとめる ここにあることが全部ではないので、正確なことは最下記リンクへ DI パターンとは何か 「インスタンス変数にオブ…

配列よりもリストを

コンパイル時に警告を拾うこと (データ構造は C like でなく Java としてあれ) 配列型 コンパイル時に un-typesafe 実行時に typesafe リスト型 コンパイル時に typesafe 実行時に un-typesafe package jp.ymatsukawa; import java.util.ArrayList; import j…

非境界ワイルドカード型 (unbounded wildcard type)

outline ジェネリックスの型パラメータを汎用化する ジェネリックスの型を使用したいが、実際の型パラメータが 何であるかわからない 何であるか気にしない この時、型パラメーターに ? を用いる ex jp.ymatsukawa | + -- ubwildtype | | | + -- MyUtil.java…

骨格実装 (Skeletal Implementation)

骨格実装 (Skeletal Implementation) とは何か 抽象クラスのうち、interface を implements し、このメソッド内容を定義したもの 目的は何か 骨格実装継承クラスの interface メソッド実装定義を手助けすること 骨格実装の構築方法, 利用方法 骨格実装 提供…

static field initiate optimize

src | + -- jp.ymatsukawa | + -- constructor | | | + -- InstanceAble.java + -- Main.java jp.ymatsukawa/Main.java package jp.ymatsukawa; import jp.ymatsukawa.constructor.InstantiateAble; import java.util.Calendar; public class Main { public …

Java constructor

src | + -- jp.ymatsukawa | + -- constructor | | | + -- Super.java | + -- Sub.java + -- Main.java サブクラスをインスタンス化 > 親クラスのコンストラクタが呼ばれる Main.java package jp.ymatsukawa; import jp.ymatsukawa.constructor.Sub; public …

Builder Pattern (Java)

Effective Java より 数多くのコンストラクタパラメータに直面した時の対処法 src | +-- jp.ymatsukawa | +-- builder | | | +---- SignupUser.java | +-- Main.java jp.ymatsukawa/Main.java package jp.ymatsukawa; import jp.ymatsukawa.builder.SignupUs…

static factory method (Java)

jlordiales.me stackoverflow.com 2 記事の書留め コンストラクタの検討と同様、static factory method を検討しよう コンストラクタと対照的に、名前を持てる(また、シグニチャを気にしなくて良い) 不要なインスタンス生成を避けられる 初回のメソッド実行…

Proxy パターン

良いパターンなのに良い例が思い浮かばない

動的クラス読み込み Java

Quoted from Oracle tutorial ClassLoader Applications written in statically compiled programming languages, such as C and C++, are compiled into native, machine-specific instructions and saved as an executable file. The process of combining…

Singleton pattern

(Java の深み) インスタンス生成は一回だけ src | +-- jp.ymatsukawa +-- Main.java | +-- single | + -- Single.java jp.ymatsukawa/Main.java package jp.ymatsukawa; import jp.ymatsukawa.single.Single; public class Main { public static void main(S…

委譲されるクラスは委譲したクラスが隠蔽する

(一番進捗が出ているタスク, 一番進捗が出ていないタスク void → int) 設計 顧客 | マネージャー、エンジニア1、 エンジニア2 が居るとする 顧客は知りたい エンジニア1、エンジニア2 が進めるタスクの内 一番進捗が出ているタスク 一番進捗が出ていないタス…

状態を表現管理する State パターン

(有限オートマトン) Singleton は未考慮 ↓ classify src | +-- jp.ymatsukawa +-- Main.java | +-- state | + -- Worker.java + -- WeekdayState.java + -- MorningState.java + -- AfternoonState.java + -- EveningState.java + -- NightState.java jp.yma…

servlet context definition

ServletContext is a configuration Object which is created when web application is started. It contains different initialization parameter that can be configured in web.xml. Difference from ServletConfig ServletConfig is one per servlet whi…

servlet container definition

The basic idea of Servlet container is using Java to dynamically generate the web page on the server side. So servlet container is essentially a part of a web server that interacts with the servlets. quoted from Servlet Container

Servlet definition

A servlet is simply a class which responds to a particular type of network request - most commonly an HTTP request. reference from stackoverflow.com

Strategy Pattern 処理の切替

拠点報告( hubReport.showReport ) を 「東京拠点 → 大阪拠点」と順に出力する 内部処理 処理ロジックを 東京拠点の報告処理 → 大阪拠点の報告処理 としてみる src | +-- jp.ymatsukawa +-- Main.java | +-- report | + -- HubReportStrategy.java (interfac…

インスタンス生成の分岐: Factory method と interface

stuff → staff 素晴らしい 今後この手法を参考にする クライアント側がプロダクション内部のことを気にしなくて良い プロダクション側が固定値でインスタンス生成の分岐可能 引数違いのコンストラクタ生成も可能 src | +-- jp.ymatsukawa +-- Main.java | +-…

インスタンス生成の分岐: Factory method の細工

stuff → staff 続き: インスタンス生成の分岐: factory method パターン - Red > Green > Refactor > Red ダメ 私に響かない クライアント側で冗長な情報が必要 パッケージ名、サブクラス名は公開せねばならぬし (jdbc の悪夢) プロダクション側でインスタン…

インスタンス生成の分岐: factory method パターン

stuff → staff 元: インスタンス生成の分岐(Java) - Red > Green > Refactor > Red 自分に一番響く設計を手当たり次第 デザインパターンの Factory method より (記事中では Factory > Creator) src | +-- jp.ymatsukawa +-- Main.java | +-- stuff | + -- C…

インスタンス生成の分岐(Java)

stuff → staff 思い出し用に書き残し Stfuff のコンストラクタは最適化できるか? まず設計の目的から src | +-- jp.ymatsukawa +-- Main.java | +-- stuff | | | + -- Stuff.java +-- stuffType | + -- StuffType.java + -- Manager.java + -- Engineer.java…

JUnit 4 > org.junit.rules.ExpectedException のアクセス修飾子は public

表題通りそのままです OK @Rule public final ExpectedException exception = ExpectedException.none(); NG @Rule protected final ExpectedException exception = ExpectedException.none(); @Rule private final ExpectedException exception = ExpectedE…

IntelliJ にて Maven プロジェクトを作成し JUnit を dependency する場合の雛形 pom.xml

pom.xml でうまくいかんかったんで source value 1.5 is obsolete 問題(?) なんてのがあるらしく build > plugins > plugin > configuration の source, target を 明示的に利用 JDK の ver (${java.version} ではなく固定値) にしないと 「JDK 1.5 使ってま…

unmodifiable な Map を作成する

こういうの欲しかったので...書き残し 記事 java.util.Collections.unmodifiableMap() Method Examplewww.tutorialspoint.com 引用ソースコードと実行結果 import java.util.*; public class CollectionsDemo { public static void main(String[] s) { //obj…

内部クラス(public) に在るインスタンスメソッドを使う方法

$SOME_DIR/src/Main.java 1 import myutil.ExternalClass; 2 3 public class Main { 4 public static void main(String... args) { 5 ExternalClass externalClass = new ExternalClass(); 6 ExternalClass.SubClass subClass = externalClass.new SubClass(…

for-each の骨組み作っただけで Required Found のコンパイルエラー出た時

ループ変数、ループされる変数 のクラスに食い違いがないか確かめる ———————— 自戒用に書き残し import java.util.List; import org.apache.commons.beanutils.DynaBean; public class Test { public void testMethod(List<DynaBean> resource) { for(List<DynaBean> list : reso</dynabean></dynabean>…

catch 句での Throwable と Exception 違い

Throwable は JVM レベルでの Serious Error を catch する時に使う Exception より高階層な API Exception はアプリケーションレベルでの例外を catch する時に使う Throwable より低階層な API app 構築に当たるならこちらを使うべき Throwable Throwable …

try and re-throw best practice

quoted literal and source code from: IBM Best Practice: Catching and re-throwing Java Exceptions - United States re-throw is ok notice the way to re-throw Correct The correct way to catch and re-throw an exception is to pass the caught exc…

build.sbt の libraryDependencies には何を追加すればよいか

何をどのように追加すればよいか分からなかったので Maven Repository: Search/Browse/Explore に遷移 ヘッダー(?) の検索フォームにライブラリ名を入れる(ここでは postgresql とする) 結果一覧が表示されるので適当なライブラリを選択する(PostgreSQL JDBC…