Javaのパラメーターモードクラスの使用方法

ParameterMode クラスは、Java でメソッドパラメータのモードを表す列挙クラスです。次のような定数があります。

  1. IN:入力パラメーターモードを示します。パラメーターがINモードとして宣言されている場合、その値はメソッドの呼び出し元からのみ渡すことができ、メソッド内では変更できません。
  2. OUT:出力パラメータモードを表します。パラメータがOUTモードで宣言されると、メソッド内部からその値が出力されるだけで、メソッド呼び出し元はメソッド内部で修正された値をパラメータ経由で取得できます。
  3. INOUT: 入出力パラメータモードを表します。パラメータがINOUTモードとして宣言されると、メソッドの呼び出し側からその値を渡すことも、メソッド内部から渡すこともでき、メソッドの呼び出し側はメソッド内で変更された値を取得できます。

ParameterModeクラスは、引数のモードを表す定数を定義し、メソッド呼び出し時に引数が適切に処理されるようにする、リフレクションのような機能で主に使用されます。たとえば、引数がインプットパラメーターかどうかを判断するのにParameterModeを使用し、メソッド呼び出し時に入力パラメーターの値を誤って変更してしまうことが防げます。

以下のコード例を参照してください。

import java.lang.reflect.Parameter;
public class Main {
public static void main(String[] args) throws NoSuchMethodException {
Class<TestClass> clazz = TestClass.class;
// 获取方法的参数
Parameter[] parameters = clazz.getMethod("testMethod", int.class, String.class).getParameters();
for (Parameter parameter : parameters) {
// 获取参数的模式
Parameter.Mode mode = parameter.getMode();
if (mode == Parameter.Mode.IN) {
System.out.println("IN parameter: " + parameter.getName());
} else if (mode == Parameter.Mode.OUT) {
System.out.println("OUT parameter: " + parameter.getName());
} else if (mode == Parameter.Mode.INOUT) {
System.out.println("INOUT parameter: " + parameter.getName());
}
}
}
}
class TestClass {
public void testMethod(int inParam, String inoutParam) {
inoutParam = "modified";
System.out.println("inParam: " + inParam);
System.out.println("inoutParam: " + inoutParam);
}
}

このサンプルコードでは、反射でTestClassクラスのtestMethodメソッドのパラメータを取得し、ParameterModeクラスの定数を使ってパラメータのモードを表しています。最後に、各パラメータのモードと名前を出力しています。

結果は次のとおりです。

IN parameter: inParam
INOUT parameter: inoutParam
bannerAds