ソフトウェア開発では、すべてソフトウェアプロバイダによるライブラリを使用しています。クラスAでは、x、y、zという4つの関数があると考えてください。私は自分の開発チームが関数xを使わないようにしたい。そのため、使用しないように指示するのではなく、アイデアを見つけました。クラスを継承してすべての関数をオーバーライドし、関数xに対してunsupportedmethod例外がスローされ、残りの場合はスーパーメソッドが呼び出されます。また、私は問題が見つかりました、開発者は直接使用されているクラスAを回避する方法、直接ベースクラスを使用することができます。私はOSGiで同様の機能を見つけました。libバンドルは持ち込まれ、その後はエクスポートされません。これはJavaを達成するための方法はありますか?Javaライブラリの再利用
答えて
16進エディタでライブラリクラスファイルを編集し、そのアクセス修飾子をpublicからpackage privateに変更できます。また、名前を変更して継承を使用してこのクラスをラップすることもできます。 Hereあなたはクラスファイルの仕様を見つけることができます。一度私はいくつかの追加のロギングと他の便利なトリックを提供するラッパークラスでjdbcドライバクラスを置き換えるこのテクニックを試してみました。
これらの理由から、コードレビューが存在すると思います。第三者のソースを編集できない状況を考えてください。あなたは何をしますか? Siddharthが言っているように、それをサブクラス化して意味のある例外をスローし、それを明確な理由で文書化します。それ以降もベースクラスを使用している人は、ほとんどが無知ではないかもしれませんが、好奇心を逸らす可能性があります。そのようなことは、個人的にも学習の面でも評価できますが、プロジェクトのために開発者はガイドラインに従わなければなりません。
複雑なソフトウェアソリューションよりも、自分の開発者に何をすべきかを伝えるだけでよいと思います。時にはシンプルな方が良い場合もあります。
しかし、このパスを控えておけば、Springユーザーの場合は、アスペクトを使用してアーキテクチャー標準を適用することができます。違法メソッドが呼び出された場合に例外をスローするアスペクトで、問題のメソッドを組み立てます。
書式、デッドコード、変数の命名規則など、特定の規則を遵守するためのソースコードをチェックするさまざまなツールがあります。Maven Enforcer plugin,checkstyleおよびPMDがあります。
これにより、特定のメソッド呼び出しを禁止するルールを記述することができます。コンパイル時に自動的にチェックすることができます。残念ながら私が言うことができる限り、上記のツールのどれもが「不法なメソッド呼び出し」をサポートしていません。しかし、PMDを書くには、少なくとも新しいチェックはかなり簡単です。
- 1. Java再利用エグゼキュータ
- 2. Selenium javaブラウザセッションの再利用
- 3. JAVA JDBC再利用接続
- 4. ライブラリを使用しないコードの再利用
- 5. Java I/O - 再利用InputStreamオブジェクト
- 6. MonoTouchで既存の.NETライブラリを再利用する方法
- 7. 再利用アクションメーラテンプレート
- 8. WPF - 再利用
- 9. 再利用フラグメント
- 10. 再利用値
- 11. カスタムセルの再利用
- 12. スイッチステートメントロジックの再利用
- 13. UIWebViewの再利用
- 14. UIViewの再利用
- 15. Fftw3ライブラリと再利用を計画しています
- 16. pyodbcカーソル再利用
- 17. SpecFlow再利用シナリオ
- 18. MFMailComposeViewControllerを再利用
- 19. サブビューを再利用
- 20. silverlight - 再利用コンポーネント
- 21. FtpWebRequestを再利用
- 22. svcutil再アセンブリの除外/再利用
- 23. iOS用再利用コンポーネント
- 24. Androidソケットの再利用
- 25. UITableViewとセルの再利用
- 26. SqlConnectionとSqlDataReaderの再利用
- 27. Oracleリファクタの再利用
- 28. LINQ to SQL:DataContextの再利用
- 29. GWTのウィジェットを再利用
- 30. Angular2ローカルコンポーネント/テンプレートの再利用
ソースを編集できないと思いますか? – Jivings
それをサブクラス化して、関数の最初の行にIToldYouNotToUseThisFunctionException例外をスローします。 – Siddharth
あなたは[1] Javaのセキュリティマネージャを見て、この[stackoverflowの記事]を持っている場合があります[1]:http://stackoverflow.com/questions/5486797/how-to-prevent-public-特定のクラスから呼び出されるメソッド/ 5490106#5490106 – Korgen