Java
多重継承できない言語でなるべく誰でもわかるように共通化のために継承を使うべきではない理由をまとめた。 継承を使うべきでない理由は他にもあるがとりあえず一番簡単に納得できそうな理由について記載した。 多重継承できたとしても、共通化のために継承…
HashMap#resizeを読む とりあえずputValを読んでるがしょっぱなテーブルが初期化される前に呼び出すとresizeが呼ばれる * Initializes or doubles table size. If null, allocates in * accord with initial capacity target held in field threshold. * Oth…
そもそもクラスのJavaDocを読むべき Hash table based implementation of the Map interface. This implementation provides all of the optional map operations, and permits null values and the null key. (The HashMap class is roughly equivalent to …
HashMapってhashCodeで計算したハッシュからキーと値を引ける構造があって、ハッシュから値を引けるから早い、みたいな理解があって、あとはhashCodeがぶつかったらequalsの結果が等しいかチェックしてる、みたいな理解だったんだけどそもそも「ハッシュから…
11:00 Javadocから考える・はじめる業務改善 Eclipse helpというのがあるのを知った 13:30 収益を支える中規模アプリケーション開発奮闘記 レビューで指摘しがちなやつをどっかにまとめて見れるようにしとくのやりたくなった 14:30 Java10まとめと、どうなる…
10:00 キーノート/JavaでWebサービスを作り続けるための戦略と戦術/JUnit5 11:00 Javadoc 13:30 Spring 5/グラフデータベース 14:30 Java10/管理画面/トレースのやつ 15:45 Docker入門/スクラム 16:45 GraphQL/gRPC/サーバーレス 17:45 DDD
適当にJavaでなんか作る時パッケージ名つけるじゃないですか でもドメイン持ってなかったんでいっつも悩んでたんですよね ドメイン取ってないのにcom.myapp.xxxとかパッケージつけたりするんですけどちょっとなんかもやっとするじゃないですか だからドメイ…
p17で最初のプロジェクトを実行したところでデプロイに失敗しハマる 具体的には以下のような状況 glassfishは起動可能(ブラウザからlocalhost:8080でアクセスできる) が、NetBeans上からglassfishを停止できない(停止ボタンがグレーアウトしている) NetB…
セッターによるインジェクション @Component public class SetterInjectionServiceImpl implements SetterInjectionService{ //インジェクション対象 private Test target; //セッターによるインジェクション @Autowired private void setTarget(Test target…
例1 import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { List2<Object> list = new List2<>(); List<String> sList = new ArrayList<>(); List<Object> oList = new ArrayList<>(); //List<String>はList<Object>のサブクラスではな</object></string></object></string></object>…
再起型境界 import java.util.List; public class Test { //引数がCompareble2<T>型のリストであることが保証されるためOK private static <T> Comparable2<T> max1(List<Comparable2<T>> list){ Comparable2<T> max = list.get(0); for(Comparable2<T> t : list){ if(max.compareTo(t) > 0</t></t></comparable2<t></t></t></t>…
ジェネリクスを使おう 具象不可能型は配列を生成できない DelayQueueってなに →Delayedインターフェースを実装したクラスのみ格納できるキュー →Delayedインターフェースを実装したクラスがオーバーライドしたgetDelayedメソッドの戻り値が0未満でないと、要…
配列よりリストを 配列と総称型の違い(共変) SuperのサブタイプがSubならSubはSuperのサブタイプ ListはListのサブタイプではない Object[]Objectのサブクラス(あらゆるクラス)が格納できるが格納された配列の型のサブクラスの値しか格納できない(が、…
非チェック警告を潰せ ふつうに潰せるやつはつぶそうね はい 潰せないやつは@SuppressWarnings("unchecked")でつぶせ でかいスコープに@SuppressWarningsつけるな 出来る限り小さいスコープにつけろ!!!!!! 宣言にしかつけられないからスコープを縮める…
総称型のクラスを型パラメータなしで使うな List list = new BookList; list.add(new Magazine()); Book book = (Book)list.get(0); コンパイル通っちゃうけど実行時にキャストできなくてエラーになる。 ListとList¥<Object¥>の違い(なんか型パラメータの部分がマー</object¥>…
staticメンバよりstaticでないメンバを選べ enclosing class→内部クラスに対して外側のクラス 4つのネストされたクラス static member classes enclosing classのstaticなメンバである enclosing classのすべてのメンバにアクセスできる。 nonstatic member …
戦略を表すのに関数オブジェクトを使え 何についての戦略なのか?を表すインターフェースを作る 実装クラスを作る 利用者はインターフェースの形で宣言された変数に実装クラスを突っ込む 注意点 匿名クラスの形で実装する場合インスタンスが何回も作られる構…
見たセッション SpringはどうやってDIしているのか SpringはどうやってDIしているのか · Issue #35 · jjug-ccc/call-for-paper-2016fall · GitHub ・スキャンの対象はclassファイルを直接解析して判定してる ・インスタンスはClassLoaderから読み込んで生成…
型を定義するためだけにインターフェースを使いなさい インターフェースのクラスへの実装はクライアントがそのクラスのインスタンスによって出来ることをについて表現すべきである。 constant intercafe メソッドがなくて定数の定義だけしてるインターフェー…
ロールバックしてくれ www.catalysts.cc @Transactional(rollbackFor = Exception.class) でできると
抽象クラスよりもインターフェースを選べ 抽象クラス 実装が持てる インターフェース ・実装が持てない(Java 8からstaticなメソッドは実装できるけど) ・クラスの階層にかかわらず実装出来る 既存クラスを抽象クラスのサブクラスしようとすると 既存クラス…
継承することを前提に設計する(そしてドキュメントを書く)か継承させないかどっちかにしろ Javadocに継承したらどうなるのか書いとけ overrideしたらどうなるのか書いとけ コンストラクタはオーバーライド可能なメソッドを呼んではいけない スーパークラス…
継承よりコンポジションを 継承はカプセル化を破る(???) サブクラスはスーパークラスの実装に依存する スーパークラスの実装が変わればサブクラスが破壊されるかもしれない スーパークラスが継承されることを前提に設計されていない場合、リリース毎に…
不変なクラスが素敵である理由 設計しやすい 実装しやすい バグがでにくい 不変なクラスを作るためのルール オブジェクトの状態を変えるメソッドを作らない。 継承できないようにする。 すべてのフィールドをfinalにする。 すべてのフィールドをprivateにす…
publicなクラスではpublicなフィールドではなくてアクセサメソッドを使おう なんで フィールドにアクセスした時に副次的な動作を入れられる カプセル化の恩恵を受けられる カプセル化の恩恵云々の話があんまりピンとこないのは多分大規模なアプリであったり…
良いデザインは情報を隠蔽する 良いデザインは内部でもっているデータや実装を出来る限り他のモジュールから隠蔽する。 モジュールはAPI経由でのみ伝達され、内部で何が行われているか他のモジュールは意識しない。 なぜ隠蔽するか 分離されたモジュールは個…
なんで行ったのか なんとなくこういうのに一度行ってみたかったから 行くまで Java EEのハンズオンを見よう(見よう?)と思ったので事前準備をした。 Sessions / JJUG CCC 2015 Fall(11月28日開催) | 日本Javaユーザーグループ ほかは何見るかあんまり決…
public class OverloadTest { public static void method(Sexy sexy){ System.out.println("メソッドA"); } public static void method(SuperSexy superSexy){ System.out.println("メソッドB"); } public static void main(String[] args){ Sexy sexy = new…
なんかいろいろ出来るって程度にしか理解してないので一回じゃっとアレする。 現状知ってるのは、 なんかコンパイルエラーの条件に出来る(@Overrideとか) アノテーションがついてますよ、ってのを見て特別な動作をさせられる(AOPで差し込まれたメソッドの…
Comparebleの話 Comparable (Java Platform SE 7) おやくそく sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) そして、x.compareTo(y)が例外を投げるなら、y.compareTo(x)も投げること。 関係が連続していること。 x.compareTo(y) > 0 && y.compareTo(z) > 0 …