Java

わかりやすいJavaEEウェブシステム入門でいきなりハマった(macOS Sierra)

p17で最初のプロジェクトを実行したところでデプロイに失敗しハマる 具体的には以下のような状況 glassfishは起動可能(ブラウザからlocalhost:8080でアクセスできる) が、NetBeans上からglassfishを停止できない(停止ボタンがグレーアウトしている) NetB…

Springのセッターインジェクション

セッターによるインジェクション @Component public class SetterInjectionServiceImpl implements SetterInjectionService{ //インジェクション対象 private Test target; //セッターによるインジェクション @Autowired private void setTarget(Test target…

Effective Javaを読んでいる㉘

例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>…

Effective Javaを読んでいる㉗

再起型境界 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>…

Effective Javaを読んでいる㉖

ジェネリクスを使おう 具象不可能型は配列を生成できない DelayQueueってなに →Delayedインターフェースを実装したクラスのみ格納できるキュー →Delayedインターフェースを実装したクラスがオーバーライドしたgetDelayedメソッドの戻り値が0未満でないと、要…

Effective Javaを読んでいる㉕

配列よりリストを 配列と総称型の違い(共変) SuperのサブタイプがSubならSubはSuperのサブタイプ ListはListのサブタイプではない Object[]Objectのサブクラス(あらゆるクラス)が格納できるが格納された配列の型のサブクラスの値しか格納できない(が、…

Effective Javaを読んでいる㉔

非チェック警告を潰せ ふつうに潰せるやつはつぶそうね はい 潰せないやつは@SuppressWarnings("unchecked")でつぶせ でかいスコープに@SuppressWarningsつけるな 出来る限り小さいスコープにつけろ!!!!!! 宣言にしかつけられないからスコープを縮める…

Effective Javaを読んでいる㉓

総称型のクラスを型パラメータなしで使うな List list = new BookList; list.add(new Magazine()); Book book = (Book)list.get(0); コンパイル通っちゃうけど実行時にキャストできなくてエラーになる。 ListとList¥<Object¥>の違い(なんか型パラメータの部分がマー</object¥>…

Effective Javaを読んでいる㉒

staticメンバよりstaticでないメンバを選べ enclosing class→内部クラスに対して外側のクラス 4つのネストされたクラス static member classes enclosing classのstaticなメンバである enclosing classのすべてのメンバにアクセスできる。 nonstatic member …

Effective Javaを読んでいる㉑

戦略を表すのに関数オブジェクトを使え 何についての戦略なのか?を表すインターフェースを作る 実装クラスを作る 利用者はインターフェースの形で宣言された変数に実装クラスを突っ込む 注意点 匿名クラスの形で実装する場合インスタンスが何回も作られる構…

JJUG CCC 2016 Fallにいってきた

見たセッション SpringはどうやってDIしているのか SpringはどうやってDIしているのか · Issue #35 · jjug-ccc/call-for-paper-2016fall · GitHub ・スキャンの対象はclassファイルを直接解析して判定してる ・インスタンスはClassLoaderから読み込んで生成…

Effective Javaを読んでいる⑲

型を定義するためだけにインターフェースを使いなさい インターフェースのクラスへの実装はクライアントがそのクラスのインスタンスによって出来ることをについて表現すべきである。 constant intercafe メソッドがなくて定数の定義だけしてるインターフェー…

Springの@Transactionalは非チェック例外をスローしたときにロールバックしてくれない

ロールバックしてくれ www.catalysts.cc @Transactional(rollbackFor = Exception.class) でできると

Effective Javaを読んでいる⑱

抽象クラスよりもインターフェースを選べ 抽象クラス 実装が持てる インターフェース ・実装が持てない(Java 8からstaticなメソッドは実装できるけど) ・クラスの階層にかかわらず実装出来る 既存クラスを抽象クラスのサブクラスしようとすると 既存クラス…

Effective Javaを読んでいる⑰

継承することを前提に設計する(そしてドキュメントを書く)か継承させないかどっちかにしろ Javadocに継承したらどうなるのか書いとけ overrideしたらどうなるのか書いとけ コンストラクタはオーバーライド可能なメソッドを呼んではいけない スーパークラス…

Effective Javaを読んでいる⑯

継承よりコンポジションを 継承はカプセル化を破る(???) サブクラスはスーパークラスの実装に依存する スーパークラスの実装が変わればサブクラスが破壊されるかもしれない スーパークラスが継承されることを前提に設計されていない場合、リリース毎に…

Effective Javaを読んでいる⑮

不変なクラスが素敵である理由 設計しやすい 実装しやすい バグがでにくい 不変なクラスを作るためのルール オブジェクトの状態を変えるメソッドを作らない。 継承できないようにする。 すべてのフィールドをfinalにする。 すべてのフィールドをprivateにす…

Effective Javaを読んでいる⑭

publicなクラスではpublicなフィールドではなくてアクセサメソッドを使おう なんで フィールドにアクセスした時に副次的な動作を入れられる カプセル化の恩恵を受けられる カプセル化の恩恵云々の話があんまりピンとこないのは多分大規模なアプリであったり…

Effective Javaを読んでいる⑬

良いデザインは情報を隠蔽する 良いデザインは内部でもっているデータや実装を出来る限り他のモジュールから隠蔽する。 モジュールはAPI経由でのみ伝達され、内部で何が行われているか他のモジュールは意識しない。 なぜ隠蔽するか 分離されたモジュールは個…

JJUG CCC 2015 Fallにいってきた(セッションの内容以外の話)

なんで行ったのか なんとなくこういうのに一度行ってみたかったから 行くまで 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で差し込まれたメソッドの…

Effective Javaを読んでいる⑫

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 …

Effective Javaを読んでいる⑪

cloneを賢くオーバーライドせよ Clonableインターフェース周辺について何となくわかってから読まないと意味がわからなさそうなので意味がわかってから続きをよむ Object#clone() Objectのcloneをオーバーライドする。 Clonableインターフェースを実装する。…

Effective Javaを読んでいる⑩

いつもtoStringをオーバーライドせよ デバッグが楽になるのかな toStringを実装する。 他の人がそのtoStringを使ってなんかする toStringの実装をかえる ほかの人のコードがおかしくなる こんなことが起きるので注意(ドキュメントに意図を書こう!)

Effective Javaを読んでいる⑨

equalsをオーバーライドするときはhashCodeもオーバーライドしなさい Object#hashCode()の規約 同じオブジェクト(equalsで比較する値が変わってない)場合は、常に同じhashCodeを返す。アプリケーションを2回実行した時に1回目と2回目のhashCodeは別でもよ…

Effective Javaを読んでいる⑧

Object.equalsの適切なオーバーライド オーバーライドしなくていいのは・・・ 各インスタンスが本質的にユニークである場合(コネクションとか?) 論理的に等しいかどうかがどうでもいい場合(よくわからん) スーパークラスがequalsを実装してて継承したク…

Effective Javaを読んでいる⑦

ファイナライザだめ System.runFinalizersOnExitと、Runtime.System.runFinalizersOnExitは悪魔の双子 ファイナライザが実行中にキャッチされない例外がスローされると例外が無視されてファイナライズが終了する public class Test { public static void mai…

Effective Javaを読んでいる⑥

GCあるからってメモリについて考える必要がないわけじゃないんだよみたいな話意図せず参照が残ってるオブジェクトがGCされないで残る→そいつらが参照してるオブジェクトが残る→やばいもう意図的には参照しないけどどっかの変数が参照してる場合は変数にnull…

Effective Javaを読んでいる⑤

Effective Javaを読んでいる① - チョキチョキかにさんカニバリズム Effective Javaを読んでいる② - チョキチョキかにさんカニバリズム Effective Javaを読んでいる③ - チョキチョキかにさんカニバリズム Effective Javaを読んでいる④ - チョキチョキかにさん…