Java注解で可変長引数の受け取りを実現する方法
Javaでは、アノテーションを利用することで可変長引数の受け渡しが可能になります。以下に例を示します。
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface VariableParameters {
String[] value();
}
上記の例では、VariableParametersというアノテーションを定義しました。このアノテーションはメソッドで利用でき、文字列の配列をパラメーターとして渡すことができます。
そして、そのアノテーションを使用したメソッドでは、可変長引数をアノテーションの引数として渡すことができます。例えば:
public class ExampleClass {
@VariableParameters({"parameter1", "parameter2"})
public void exampleMethod(String... parameters) {
// 方法的具体实现
}
}
上記の例では、メソッド`exampleMethod`を`VariableParameters`アノテーションで修飾し、可変長引数`parameters`をアノテーションの引数として渡しています。
このアノテーションを使用する際、リフレクションを通じてアノテーション引数の値を取得することができます。たとえば、
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) throws NoSuchMethodException {
ExampleClass example = new ExampleClass();
Method method = example.getClass().getMethod("exampleMethod", String[].class);
VariableParameters annotation = method.getAnnotation(VariableParameters.class);
String[] parameters = annotation.value();
// 使用参数进行操作
}
}
上記の例ではリフレクションを通じてexampleMethodメソッドを取得し、その付与されたVariableParametersアノテーションを取得し、アノテーションパラメータの値を取得しました。
そうすれば、アノテーションを使って可変長引数の受け渡しが出来る。