[Java] Javaの子ネタ
最近、開発をまた行うようになってJavaの子ネタをいくつか発見したので、紹介したい。
1. キャストが不要なファクトリのシグネチャ
以下のようにやるとファクトリを使ってもキャストしなくて
すみます。たとえば、Seasar2のシグネチャは、キャストが必要なのでラップして使ったりしています。
(Factroy利用クラス) … A aaa = Factory.get(A.class) ;//キャスト不要> … (Factory内のロジック) … static public <T>T get(Class<T> classtype) { return (T) doGet(classtype); } …
2.特定クラスの呼び出しパッケージを制限する方法
フレームワークとかで呼び出し側のパッケージを制限したい時って良くあります。
呼び出しクラスの解析って、Exceptionを投げたときのスタックトレースを使えば可能になります。
無論負荷が大きいので、開発時のみ確認するアサーションにするわけです。
… CallerAnalyzer.AssertAccessedFrom("rdx.presentationModel.*", "rdx.framework.*");//引数以外のパッケージからのアクセスがあるとエラー … (CallerAnalyzerクラス内) … try { throw new Exception(); } catch (Exception e) { return e.getStackTrace()[2]; } …