偶然发现这个有趣的东东,也许有些地方还能用得到,不过,用java.lang.Math来做实验是没有任何意义的。
package com.yhef.test.jdktest;
import java.lang.reflect.Constructor;
public class Test {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("java.lang.Math");
Constructor[] declaredConstructors = clazz.getDeclaredConstructors();
// 因为Math只有一个构造方法,所以我就不遍历了。
Constructor constructor = declaredConstructors[0];
// 设置可见性,不知这个方法设计的初衷到底是干啥用的,有时候挺烦人的。
constructor.setAccessible(true);
// 构造一个实例对象
Math mathInstance = (Math) constructor.newInstance(null);
System.out.println(mathInstance);
System.out.println(mathInstance.PI);
System.out.println(mathInstance instanceof Math);
}
}
本文揭示了如何利用Java反射API探索内置Math类的构造过程,展示了反射在理解类结构和实现动态操作的强大能力。
1179

被折叠的 条评论
为什么被折叠?



