java反射(获取某个类或者某个对象所对应的Class对象的常用3中方法)
来源:互联网 发布:武科大 知乎 编辑:程序博客网 时间:2024/04/28 11:48
1.使用Class类的静态方法 forName: Class.forName("java.lang.Object");
public class TestClassForName
{
public static void main(String[] args) throws Exception
{
Class<?> classtype = Class.forName("java.lang.Object");//获得Clss对象
Method[] methods = classtype.getDeclaredMethods();
for(Method method: methods)
{
System.out.println(method);
}
}
}
2.使用类的,class语法: XXX.class
public class TestClass
{
public int addMethod(int a, int b)
{
return a + b;
}
public String echo(String message)
{
return "Hell:"+message;
}
public static void main(String[] args) throws Exception
{
Class<?> classType = InvokeTester.class;//获得Class对象
Object invokeTester = classType.newInstance();
Method addMethod = classType.getMethod("addMethod",new Class[]{int.class,int.class});
Object result1 = addMethod.invoke(invokeTester,new Object[]{1,3});
System.out.println(result1);
System.out.println("==============================");
Method echoMethod = classType.getMethod("echo",new Class[]{String.class});
Object result2 = echoMethod.invoke(invokeTester,new Object[]{"辛华轩"});
System.out.println((String)result2);
}
}
3.使用对象的getClass()方法:
String s = "XXX";
Class<?> class = XXX.getClass();
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
若想通过类的不带参数的构造方法来生成对象,我们有两种方式:
A:
先获得Class对象,然后通过该Class对象的newInstance()方法直接生成即可:
Class<?> classType = String.class;
Object obj = classType.newInstance();
B:
先获得Class对象,然后通过该对象获得对应的ConStructor对象,再通过该ConStructor对象的newInstance()方法生成:
Class<?> classType = Customer.class;
Constructor cons = ClassType.getConstructor(new Class[] {});
Object obj = cons.newInstance(new Object[]{});
若想通过类的带参数的构造方法生成对象,只能使用下面一种方式:
Class<?> classType = Customer.class;
Constructor cons = ClassType.getConstructor(new Class[] {XXXA.class,XXXB.clss});
Object obj = cons.newInstance(new Object[]{xxxA,xxxB});
- java反射(获取某个类或者某个对象所对应的Class对象的常用3中方法)
- 如何得到某个类所对应的class对象
- 关于Java的泛型在所声明的对象中如何获取class或者实例的方法的总结
- 关于Java的泛型在所声明的对象中如何获取class或者实例的方法的总结
- c++限制某个class所能产生对象数量的方法
- 技术(2)—限制某个class所能产生的对象数量
- 四种获取Class对象的方法 Java反射机制
- java反射之——获取Class对象的方法
- java反射(2)获取Class对象的三种方法
- 获取某个类或者某个实例的Class的三种方式
- java利用反射原理:根据某个对象的名称和方法去执行该方法。
- 获取字符串中 某个字符或者某个字符串的个数
- JAVA语言中Class类对象实例的获取方法
- 限制某个类所能产生的对象数量
- 反射(reflect)--使用某个类的字节码来获取该类对象
- 条款二十六:限制某个class所能产生的对象的数量
- 条款26:限制某个class所能产生的对象数量
- 《More Effective C++》条款26:限制某个Class所能产生的对象数量
- Android开发--SharedPreferences初步介绍
- 自己电脑eclipse配置
- MyEclipse9.0破解工具及方法图解
- 关于log4cplus中AsyncAppender的配置
- 变量在shell脚本间的传递
- java反射(获取某个类或者某个对象所对应的Class对象的常用3中方法)
- ti-sdk-am335x-evm 配置nfs
- 隐藏Administrator
- static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
- BaseAdapter 的notifyDataSetInvalidated 和notifyDataSetChanged
- ARM IMPORT Image$RO$Limit 的含义
- 《C++ Primer》 第01章 【入门】
- UI设计师,UI工程师
- NYOJ 14.(贪心) 会场安排问题