ホームページ >Java >&#&チュートリアル >直接サポートせずに Java でメソッド受け渡し機能を実現するにはどうすればよいですか?
代替アプローチによる Java でのメソッド受け渡しのエミュレーション
Java では、メソッド受け渡しまたは参照されるパラメーターは直接サポートされていません。ただし、参照によるメソッドの受け渡しと同様の機能を提供する代替手段があります。そのような代替手段の 1 つは、インターフェイスを利用することです。
インターフェイスは、実装なしで抽象メソッドを定義します。インターフェイスは具体的なメソッドへの直接参照を提供できませんが、特定の機能を実装するためのコントラクトとして機能します。次の例を考えてみましょう。
public interface CustomMethod { public void execute(Component leaf); }
このインターフェイスは、Component オブジェクトをパラメータとして受け取る、execute という単一のメソッドを定義します。ここで、このインターフェイスを実装し、execute メソッドに特定の機能を提供する具象クラスを定義できます。例:
public class ChangeColor implements CustomMethod { @Override public void execute(Component leaf) { // Change the color of the component here } } public class ChangeSize implements CustomMethod { @Override public void execute(Component leaf) { // Change the size of the component here } }
これらのカスタム メソッドを使用すると、setAllComponents メソッドを次のように変更できます。
public void setAllComponents(Component[] myComponentArray, CustomMethod myMethod) { for (Component leaf : myComponentArray) { if (leaf instanceof Container) { Container node = (Container) leaf; setAllComponents(node.getComponents(), myMethod); } myMethod.execute(leaf); } }
これで、カスタム メソッドのインスタンスをパラメータとして setAllComponents に渡すことができます。メソッドを使用して、参照によるメソッドの受け渡しと同様の機能を実現します。
setAllComponents(this.getComponents(), new ChangeColor()); setAllComponents(this.getComponents(), new ChangeSize());
このアプローチでは、インターフェイスを利用して抽象メソッド コントラクトを作成します。特定のメソッド実装を動的に渡す方法を提供します。
以上が直接サポートせずに Java でメソッド受け渡し機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。