关于类的反射相关学习
来源:互联网 发布:便携网络图形图像 编辑:程序博客网 时间:2024/06/02 03:44
一 怎么获取类的实例
1.例子
package com.reflet;/** * Created by wq on 2017/8/18. */class Student{ private String name; private Integer age;/* public Student(String name,Integer age){ this.name=name; this.age=age; System.out.print("Student类的构造方法"); }*/ @Override public String toString() { return "Student类的toString方法"; }}public class ReflectDemo { public static void main(String args[]) throws ClassNotFoundException, IllegalAccessException, InstantiationException { Class<?> cls = Class.forName("com.reflet.Student"); Object obj = cls.newInstance(); }}
Object obj = cls.newInstance(); 默认调用的是无参的构造函数2.获取一个类中全部的构造函数
package com.reflet;import java.lang.reflect.Constructor;/** * Created by wq on 2017/8/18. */public class RefletStringDemo { public static void main(String agrs[]) throws ClassNotFoundException { Class<?> cls = Class.forName("java.lang.String"); //取得全部构造方法 Constructor<?>[] cons = cls.getConstructors(); for (int x=0;x<cons.length;x++){ System.out.println(cons[x]); } //?怎么调用指定的构造方法 }}3.怎样调用指定参数的构造函数呢
Class<?> cls = Class.forName("com.reflet.Student");//指定参数的类型 Constructor<?> cons = cls.getConstructor(String.class,Integer.class); Object obj =cons.newInstance("TOM",20);二。怎么调用类之中可以使用的方法呢?
(1父类继承而来的方法2.本类自定义的方法)
package com.reflet;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;/** * Created by wq on 2017/8/18. */class Student implements Message{ public void fun(){}; public void print(){} @Override public void get() { }}interface Message{ public void get();}public class ReflectDemo { public static void main(String args[]) throws ClassNotFoundException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException { Class<?> cls = Class.forName("com.reflet.Student");// 取得全部方法 包括继承来的方法 Method met[] =cls.getMethods(); for(int x=0;x<met.length;x++){ System.out.println(met[x]); }//只取得本类中的方法 Method meth[] =cls.getDeclaredMethods(); for(int x=0;x<meth.length;x++){ System.out.println(meth[x]); } }}
package com.reflet;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.lang.reflect.Modifier;/** * Created by wq on 2017/8/18. */class Student implements Message{ public void fun(){}; public void print(){} @Override public void get() { }}interface Message{ public void get();}public class ReflectDemo { public static void main(String args[]) throws ClassNotFoundException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException { Class<?> cls = Class.forName("com.reflet.Student"); Method met[] =cls.getMethods(); for(int x=0;x<met.length;x++){ //取得修饰符 返回的是修饰符对应的代码 System.out.print(met[x].getModifiers()+","); //取得修饰符名称 System.out.print(Modifier.toString( met[x].getModifiers())+","); //取得返回值的类型名称 System.out.println(met[x].getReturnType().getSimpleName()); Class<?> params[] =met[x].getParameterTypes(); if(params.length>0){ //表示有参数 for (int y=0;y<params.length;y++){ System.out.println(params[y].getSimpleName()+" arg- "+y+","); if (y<params.length-1){ //还有参数 就输出逗号 System.out.println(","); } } } //取得方法的名称 System.out.print(met[x].getName()); System.out.println(); } Method meth[] =cls.getDeclaredMethods(); for(int x=0;x<meth.length;x++){ System.out.println(meth[x]); } }还有取得异常等等不做描述。。。}
阅读全文
0 0
- 关于类的反射相关学习
- 关于反射的认识与学习
- 关于java反射机制的学习
- 近日关于Java反射的学习
- 反射类的学习
- 关于String类的反射
- 工厂反射、缓存相关的操作类
- java反射类的相关知识
- 反射相关的异常
- 反射相关的API
- 反射的相关教学
- Java学习,数组的相关操作,封装类,Class类,反射API
- Java反射之获取类的相关信息学习笔记(一)
- C#反射相关知识学习
- 类反射相关
- java的反射机制--关于类中属性的反射。
- 关于struts1的相关知识学习
- 关于国家标准AVS的相关学习资料
- Number of Battlefields UVA
- spring事务及原理模拟
- Java多线程基础
- hdu3460
- ubuntu环境下搭建和配置使用nginx服务器
- 关于类的反射相关学习
- SHIRO工作流程及原理及在Spring中集成
- 几个coding相关的电子杂志阅读
- 计算机图形学学习笔记 第三章 光栅
- iOS内存管理之引用计数初识
- 欢迎使用CSDN-markdown编辑器
- 【机器学习笔记之五】用ARIMA模型做需求预测用ARIMA模型做需求预测
- CSS3 新特性
- UART