外部クラスによって呼び出される必要があるため、メソッドをpublicに設定しましたが、1つまたは2つのメソッドで呼び出す必要があります。他のメソッドによって呼び出されると、自分のプログラムにバグが発生する可能性があります。だから、誤って自分の方法を中心に、プログラミングから私を防ぐために、私は発信者を制限したいの方法の中にこのようなものをやっている:Java - メソッドが呼び出される方法による制限
if(trace.length<2){
throw new Exception("Class should not call its own function.");
}else if(trace[1].getClassName()!=desiredClassName || trace[1].getMethodName()!=desiredMethodName){
throw new Exception(trace[1].getClassName()+"\" is invalid function caller. Should only be called by "+desiredClassName+"->"+desiredMethodName+".");
}
は私がやるべき何か他のものはありますか私のプログラムの仕組みを忘れてはいけませんか?
javadocsを記述しますか? – BalusC
私はおそらくそれをやるべきではないかと思いますが、不適切な呼び出しを明示的に防ぐように説明したようなプログラムを人々がやっているのか、誰かが私のコード全体に散らばっていると笑ってしまいます。 – schnozzinkobenstein
最も良い解決策は、このメソッドをprivateにして 'friend'メソッドを宣言することですが、これはJavaではなくC++です。あなたがやっていることは時々意味をなさないかもしれませんが、より良い解決策を見つけることを試みます。スタックトレースの作成にはかなりの時間がかかります。したがって、テストを 'assert'に置くことを検討するかもしれません。問題が発生した場合は '-ea'を使用します。 – maaartinus