JavaBean和反射

来源:互联网 发布:传奇3装备数据库 编辑:程序博客网 时间:2024/06/06 11:29

JavaBean

泛意的讲,凡java类都是javabean   1. 可重用的java组件---------new   2. 无参构造方法---------------[来自\<jsp:useBean>]   3.  JavaBean分类:      * 业务Bean: dao      * 实体Bean: entity (private property + public getter/setter)

反射

1. 利用反射API来获取一个类的信息(fields/method),并且可以改变类的成员变量内容或执行方法的一种机制;2. java.lang.reflect.*;   (Constructor,Methond,Filed)
    获取Class对象(Class):        1) Class.forName();        2) 类名.class;        3) 对象名.getClass();    获取Constructor对象(Constructor):        1) getDeclaredConstructors() //返回所有的构造方法对象数组        2) getConstructors() //返回public的所有构造方法数组    获取Method对象(Method):        1) getDeclaredMethods() //返回所有的方法(不包括继承的方法)对象数组        2) getMethods() //返回public的方法    获取Field对象(Field):        1) getDeclaredFields() //返回所有的属性对象数组        2) getFields() //返回public的属性属性方法    实例一个对象:        newInstance(Object[]) //实例一个对象
Test.java
          package com.abc.test;          import java.lang.reflect.*;          import java.util.Arrays;          import com.abc.test.entity.User;          public class Test {              public static void main(String[] args) throws Exception{                   Test test = new Test();                   test.testMethod();              }              public void testMethod() throws Exception {                    System.out.println("-----------------获取一个class对象-------------------------");                  //获取一个class对象                  Class c1 = Class.forName("com.abc.test.entity.User");                  System.out.println(c1);                  System.out.println("\n-----------------获取类的Constructor对象数组-------------------------");                  //获取类的Constructor对象数组                  Constructor[] cons = c1.getDeclaredConstructors();                  for(int i = 0; i < cons.length; i++){                    System.out.println(cons[i].getModifiers() + "----------"/* + cons[i] + "------------" */           + Arrays.toString(cons[i].getParameterTypes()));                }                System.out.println("\n------------------通过Constructor实例一个对象------------------------");                //通过Constructor实例一个对象                Constructor<User> con = c1.getDeclaredConstructor(new Class[]{int.class,String.class});                User u = (User)con.newInstance(new Object[]{12,"159"});                System.out.println(u);                System.out.println("\n------------------获取Method对象数组------------------------");                //获取Method对象数组                Method[] meths = c1.getDeclaredMethods();                for (Method method : meths) {                    System.out.println(method);                }                System.out.println("\n------------------通过Method调用方法------------------------");                //通过Method调用方法                Method numbMethod = c1.getDeclaredMethod("numb", new Class[]{int.class});                Object numbMethodReturn =  numbMethod.invoke(u, new Object[]{123});                System.out.println(numbMethodReturn);                System.out.println("\n------------------获取Field对象数组------------------------");                //获取Field对象数组                Field[] fies = c1.getDeclaredFields();                for (Field field : fies) {                    System.out.println(field);                }                System.out.println("\n------------------通过Field设置属性------------------------");                //通过Field设置属性                Field fie = c1.getDeclaredField("sex");                fie.setAccessible(true);                fie.set(u, true);                System.out.println(fie.get(u));            }          }
      User.java
          package com.abc.test.entity;          public class User {            private String name;            private int age;            private boolean sex;            User(int i) {            }            public User(String s) {            }            public User(int i, String s) {            }            private User(int i, String s, char a) {            }            protected User(String[] ss,int[] is) {              }            //-------------------            public String haha() {                return "haha";            }            public int numb(int num) {                return num + 100;            }            public void hi() {                System.out.println("hihihihihihihhihihihi");            }          }
0 0
原创粉丝点击