java中的反射问题 .
来源:互联网 发布:路由器访客网络连不上 编辑:程序博客网 时间:2024/04/28 00:04
- package com.refect.demo;
- import java.io.Serializable;
- public class Product implements Serializable{
- public String productName;
- protected String productNo;
- private double price;
- public Product(){}
- public Product(String productName,String productNo,double price){
- this.productName = productName;
- this.productNo = productNo;
- this.price = price;
- }
- public String getProductName() {
- return productName;
- }
- public void setProductName(String productName) {
- this.productName = productName;
- }
- public String getProductNo() {
- return productNo;
- }
- public void setProductNo(String productNo) {
- this.productNo = productNo;
- }
- public double getPrice() {
- return price;
- }
- public void setPrice(double price) {
- this.price = price;
- }
- public String toString(){
- return productName+":"+productNo+":"+price;
- }
- }
- ****************************************************************************************************
- package com.refect.demo;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Field;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import java.lang.reflect.Modifier;
- public class Test {
- public static void main(String[] args) {
- //1.基本数据类型
- //Class cls1 = int.class;
- //2.引用数据类型
- //Class cls2 = Product.class;
- Class cls2 = null;
- try {
- cls2 = Class.forName("com.refect.demo.Product");
- } catch (ClassNotFoundException e1) {
- e1.printStackTrace();
- }
- // Product p = new Product("杯具","bj0010",20.8);
- // Object p = null;
- // try {
- // 调用该类型中的无参的构造函数
- // p = cls2.newInstance();
- // } catch (InstantiationException e1) {
- // e1.printStackTrace();
- // } catch (IllegalAccessException e1) {
- // e1.printStackTrace();
- // }
- //Product p = new Product();
- //Class cls = p.getClass();
- //类名
- System.out.println("类路径:"+cls2.getName());
- System.out.println("类名:"+cls2.getSimpleName());
- //本类定义的所有的属性,但是不包含父类属性
- Field[] fs = cls2.getDeclaredFields();
- //返回本类以及父类所有的公共的属性
- //Field[] fs = cls2.getFields();
- //指定获取本类定义的属性
- //Field f = cls2.getDeclaredField("productName");
- //指定获取本类及父类公有的属性
- //Field f = cls2.getField("productName");
- for(Field f : fs){
- System.out.println("属性访问修饰符:"+Modifier.toString(f.getModifiers()));
- System.out.println("属性数据类型:"+f.getType());
- System.out.println("属性名:"+f.getName());
- // f.setAccessible(true);
- // try{
- // if(f.getName().equals("price")){
- // f.set(p,26.8);
- // }
- // System.out.println("属性值:"+f.get(p));
- // } catch (IllegalArgumentException e) {
- // e.printStackTrace();
- // } catch (IllegalAccessException e) {
- // e.printStackTrace();
- // }
- }
- //本类定义的所有的方法,但是不包含父类方法
- Method[] ms = cls2.getDeclaredMethods();
- //Method[] ms = cls2.getMethods();
- for(Method m : ms){
- System.out.println("方法的访问修饰符:"+Modifier.toString(m.getModifiers()));
- System.out.println("方法的返回值类型:"+m.getReturnType());
- System.out.println("方法名称:"+m.getName());
- System.out.println("参数类型:"+m.getParameterTypes());
- }
- // try {
- // Method m1 = cls2.getDeclaredMethod("setPrice", new Class[]{double.class});
- // m1.invoke(p, new Object[]{38.2});
- // Method m2 = cls2.getDeclaredMethod("getPrice", null);
- // Object res = m2.invoke(p, null);
- // System.out.println(res);
- // } catch (NoSuchMethodException e) {
- // e.printStackTrace();
- // } catch (SecurityException e) {
- // e.printStackTrace();
- // } catch (IllegalAccessException e) {
- // e.printStackTrace();
- // } catch (IllegalArgumentException e) {
- // e.printStackTrace();
- // } catch (InvocationTargetException e) {
- // e.printStackTrace();
- // }
- Constructor[] cons = cls2.getConstructors();
- for(Constructor c : cons){
- System.out.println("构造函数的访问修饰符:"+Modifier.toString(c.getModifiers()));
- System.out.println("构造函数的方法名:"+c.getName());
- for(Class pc : c.getParameterTypes()){
- System.out.println("构造函数的参数:"+ pc);
- }
- }
- try {
- Constructor c = cls2.getConstructor(new Class[]{String.class,String.class,double.class});
- Object o = c.newInstance(new Object[]{"洗具","盆",5.00});
- System.out.println(o);
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- } catch (SecurityException e) {
- e.printStackTrace();
- } catch (InstantiationException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- }
- //获取父类信息
- Class sc = cls2.getSuperclass();
- System.out.println("父类名称:"+sc.getName());
- //实现接口的信息
- Class[] ic = cls2.getInterfaces();
- for(Class i : ic){
- System.out.println("接口名称:"+i.getName());
- }
- //包信息
- Package p = cls2.getPackage();
- System.out.println("包名称:"+p.getName());
- }
- }
- java中的反射问题
- java中的反射问题 .
- JAVA反射中的一点问题
- java中的反射以及一个小问题
- Java 反射中的内部类的问题!!!
- JAVA中的类反射
- Java中的反射
- Java中的类反射
- Java中的反射机制
- JAVA中的反射机制
- java 中的反射
- Java中的反射机制
- java中的反射机制
- JAVA中的反射机制
- Java中的反射机制
- java中的反射应用
- java中的反射
- Java中的反射
- spring之IOC
- plist涉及到沙盒的一个问题
- 来自《Hadoop权威指南》第二版 - Hello Hadoop!云计算开发环境搭建
- 如果你对异常还有疑问,请看这里。
- sqlserver存储过程中利用游标遍历结果集简单示例及查询数据库时间
- java中的反射问题 .
- android动画
- 使用正则匹配字符串的子串
- 几种JavaScript图形和图表绘制工具体验
- APR安装部署提高Tomcat性能
- 关于对话框OnInitDialog里设置edit控件输入焦点问题
- 使用isReachable方法探测主机是否可以连通
- 指针常量/常量指针&指针数组/数组指针
- Android动画中的fillBefore和fillAfter属性