超级毛999 2018-10-15 12:11 采纳率: 0%
浏览 402

java 反射问题不会求教

// 作业:用反射实现下面功能
// 1-控制台输入:数字算术符数字 (如:12+34) 输出结果
// 2-控制台输入:数字算术符数字算术符数字...输出结果,split charAt subString
// 可以不考虑算术符优先级,全部从左往右执行即可

  • 写回答

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方法中首先导入了ClassMethod类,然后使用反射获取了一个名为Math的类的对象。接着,我们尝试获取名为add的方法,并使用invoke方法调用这个方法。由于Math类是不可变的,所以我们需要创建一个新的对象并将参数传递给方法。最后,打印出方法的返回值。

    评论

报告相同问题?