Java 反射 API——Parameter
类
原文:https://www.studytonight.com/java-8/java-reflection-api-parameter-class
在 Java 8 版本中,Java 增加了一个名为Parameter
的新类来获取关于方法参数的信息。Parameter
类帮助获取关于方法参数的信息,包括名称和修饰符等。它还提供了获取参数属性的替代方法。
我们可以这样理解它:假设我们在运行时有一个类,我们想知道它的方法、参数和Parameter
类型等。在这种情况下,我们使用反射 API,它由各种类组成,如类、方法、构造器、参数等。关于反射 API 的更多信息,可以参考我们的帖子 Java 反射 API 。
用于反射 API 中,用于运行时处理参数。它存储在 java.lang.reflect 包中。下面是类的声明。
申报
public final class Parameter extends Object implements AnnotatedElement
Parameter
类方法
下表包含Parameter
类的方法,这些方法有助于在运行时访问参数。
|
方法
|
描述
|
| 布尔等于(对象对象) | 它根据可执行文件和索引进行比较。 |
| 注释类型 getAnnotatedType() | 它返回一个 AnnotatedType 对象,该对象表示使用类型来指定由该参数表示的形式参数的类型。 |
|
举例时间:
让我们举一个例子来访问一个名为“计算”的类的参数,这个类包含两个带参数的方法。我们通过Parameter
类的方法来获取参数。
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
class Calculate {
int add(int a, int b){
return (a+b);
}
int sub(int a, int b){
return (a-b);
}
}
public class STDemo {
public static void main(String[] args){
Class<? extends Calculate> cal = new Calculate().getClass();
// Get methods
Method[] method = cal.getDeclaredMethods();
System.out.println("Method Name: "+ method[0].getName());
// get parameters
System.out.println("Parameters: ");
Parameter[] parameters = method[0].getParameters();
System.out.println(parameters[0].getType()+" "+parameters[0].getName());
System.out.println(parameters[1].getType()+" "+parameters[1].getName());
}
}
方法名称:添加 参数: int a int b
示例:获取方法的所有参数
在这个例子中,我们得到了类的两个方法的所有参数。因为 getParameters()方法返回一个数组,所以我们需要使用 for 循环来访问所有的参数。
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
class Calculate {
int add(int a, int b){
return (a+b);
}
int sub(int a, int b){
return (a-b);
}
}
public class STDemo {
public static void main(String[] args){
Class<? extends Calculate> cal = new Calculate().getClass();
// Get methods
Method[] methods = cal.getDeclaredMethods();
for(Method method : methods) {
System.out.println("Method Name: "+ method.getName());
Parameter[] parameters = method.getParameters();
System.out.println("Parameters: ");
for(Parameter parameter : parameters)
System.out.println(parameter);
}
}
}
方法名称:添加 参数: int a int b 方法名称:子 参数: int a int b
注意:要获取参数的实际名称,使用-参数标志编译类。默认。类文件不存储参数,返回 argsN 作为参数名,其中 N 是方法中的参数个数。