0

現在、JXErrorPaneクラスを呼び出すファクトリパターンを使用しています。他のクラスがJXErrorPaneを直接呼び出すことができないようにしたい。私はJDependライブラリを試しましたが、パッケージでのみ動作するので期待通りに動作しませんでしたが、移動したくない他のクラスがパッケージにあります。単一のJavaクラスを使用して禁止する方法

他のクラスがファクトリクラス以外のJXErrorPaneクラスを呼び出すことを禁止する方法はありますか? EclipseなどのIDEで設定することでこれを行うことができますか、明示的なテストが必要ですか?

ありがとうございました。

(JXErrorPaneはスイングクラスであり、JXErrorPane.showDialog()を書くだけで呼び出されますが、どのクラスがJXErrorPaneを使用しているかを確認するにはどうすればよいですか?他のすべてのクラスはJXErrorPaneの使用を禁じています)

+0

あなたのコードはどこですか? – Mostafiz

+2

まずは 'private'コンストラクタを使い始めます。もう一つのアイデアはAPIの' interface'だけを公開することです。 – MadProgrammer

答えて

0

"呼び出し"とは "作成"を意味します。コンストラクタを呼び出します。

いいえ、あなたは4つのjavaアクセスタイプがpublic、protected、private、およびキーワードを持たない "default"のみです。

新興パターン今日は静的メソッドとして、クラス自体に工場を含め、民間の建設を維持することです:

public class MyClass { 
    private MyClass() { /* private constructor */ } 

    // factory method 
    public static MyClass create() { 
     return new MyClass(); 
    } 
} 
+0

JXErrorPaneはスイングクラスです。それを使って1クラスだけを制限する方法はありますか? – user3512219

+0

いいえ、これは自分のコードでのみ行うことができます。 – mtj

0

私はこのウェブサイトから、この問題を解決する方法を見つけました:http://www.eclipsezone.com/eclipse/forums/t53736.html

JXErrorPaneがビルドビルドパスにあったので、ビルドパスをビルドするように設定しました。現在は、JXErrorPaneの使用を拒否しています。

しかし、私はファクトリクラスにJXErrorPaneにアクセスする方法をまだ分かりません。

+0

仲間の査読者:これは答えです。それはリンクに依存しません。それは完全な答えではありませんが、将来の訪問者にはまだ役立つかもしれません。 –

関連する問題