// 作业:用反射实现下面功能
// 1-控制台输入:数字算术符数字 (如:12+34) 输出结果
// 2-控制台输入:数字算术符数字算术符数字...输出结果,split charAt subString
// 可以不考虑算术符优先级,全部从左往右执行即可
java 反射问题不会求教
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-07 07:08关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
import java.lang.reflect.Method; import java.util.ArrayList; public class Main { public static void main(String[] args) throws Exception { ArrayList<String> list = new ArrayList<>(); String str = "12+34"; Method method = null; try { Class<?> clazz = Class.forName("java.lang.Math"); method = clazz.getMethod(str); System.out.println(method.invoke(null)); } catch (Exception e) { e.printStackTrace(); } } }这个程序通过反射来获取一个数学方法的引用,并使用这个引用来调用方法。注意,在Java中,
Math类是不可变的(immutable),这意味着我们不能直接修改它的方法返回值。因此,我们需要创建一个新的对象并传递给方法。在这个例子中,我们创建了一个名为
Main的新类,并在其中定义了main方法。我们在main方法中首先导入了Class和Method类,然后使用反射获取了一个名为Math的类的对象。接着,我们尝试获取名为add的方法,并使用invoke方法调用这个方法。由于Math类是不可变的,所以我们需要创建一个新的对象并将参数传递给方法。最后,打印出方法的返回值。解决 无用评论 打赏 举报