在Java中,可以通过类名和方法名字符串来实现对方法的调用。这通常用于在运行时动态执行代码,从而实现更加灵活的程序设计。
以下是实现该过程的完整攻略:
- 获取类名对应的Class对象
首先需要获取类名对应的Class对象,这可以通过Class.forName()方法来实现,该方法的参数为类的全名字符串,例如:
Class<?> clazz = Class.forName("java.lang.String");
上述代码获取了String类对应的Class对象。需要注意的是,如果类不在默认的类路径下,需要提供完整的包路径,例如:
Class<?> clazz = Class.forName("com.example.MyClass");
- 获取方法名对应的Method对象
获取方法名对应的Method对象,可以通过Class对象的getDeclaredMethod()方法来实现,该方法的第一个参数是表示方法名的字符串,后面跟着的参数是方法的参数类型,例如:
String methodName = "substring";
Method method = clazz.getDeclaredMethod(methodName, int.class, int.class);
上述代码获取了String类的substring方法对应的Method对象,该方法接受两个int类型的参数。
- 调用方法
获取了Method对象之后,可以通过它的invoke()方法来调用方法,该方法的第一个参数为调用该方法的对象,如果该方法为静态方法,则此参数可以为null;后面跟着的参数依次为该方法的实际参数,例如:
String str = "Hello World";
Object[] arguments = {2, 7};
System.out.println(method.invoke(str, arguments));
上述代码调用了String类的substring方法,从字符串的第二个字符开始取出长度为7的子串,并输出该子串。
下面再举一个例子,调用Math类的random()方法生成一个随机数,并输出该随机数的值:
Class<?> clazz = Class.forName("java.lang.Math");
String methodName = "random";
Method method = clazz.getDeclaredMethod(methodName);
System.out.println(method.invoke(null));
上述代码获取了Math类的random方法对应的Method对象,由于该方法为静态方法,调用该方法时第一个参数为null。
通过上述过程,可以在运行时动态地调用方法,从而实现更加灵活的程序设计。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在java中由类名和方法名字符串实现其调用方式 - Python技术站