あるクラスがメソッドを使用するのを止めて、拡張内容に応じて別のクラスにメソッドを使用させる方法があるかどうか疑問に思いました。
class1がプラグインを実装し、class2がModを実装するとします。class2がメソッドload()を使用できるようにすることは可能ですか。しかし、class1がそれを使用するのを止めてください
あるクラスがメソッドを使用するのを止めて、拡張内容に応じて別のクラスにメソッドを使用させる方法があるかどうか疑問に思いました。
class1がプラグインを実装し、class2がModを実装するとします。class2がメソッドload()を使用できるようにすることは可能ですか。しかし、class1がそれを使用するのを止めてください
たぶん、呼び出し元のタイプをメソッドに渡してから、instanceof比較演算子を使用できます。例えば:
public void myMethod(Object obj){
if(obj instanceof Mod){
\\ do something
} else if(obj instanceof Plugin){
\\ do not permit
}
}
instanceofを使用してインスタンスのタイプを確認してから、メソッドへのアクセス許可を付与します。
Class1 c1 = new Class1();
Class2 c2 = new Class2();
doIt(c1);
doIt(c2);
public void doIt(Object obj){
if (obj instanceof Class2){
myRestrictedMethod();
}
}