欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

【Class类与Java反射 】 【Method类的常用方法 】 【注解】,classmethod

来源: javaer 分享于  点击 19451 次 点评:252

【Class类与Java反射 】 【Method类的常用方法 】 【注解】,classmethod


Class类与Java反射

//********************Class类与Java反射********************************/
//********************Class类与Java反射********************************/
package com.day2_2015_7_28;
public class Student {
   private int age=20;
   public String name;
   public String sex;
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getSex() {
    return sex;
}
public void setSex(String sex) {
    this.sex = sex;
}
//********************Class类与Java反射********************************/
}
//package com.day2_2015_7_28;
//import java.lang.reflect.Field;
//public class Test1 {
//public static void main(String[] args) {
//  Student zhangsan = new Student();
//  System.out.println(zhangsan.getAge());
//  Class<? extends Student> clazz = zhangsan.getClass();
//  try {
//      Field field = clazz.getDeclaredField("age");
//将此对象的 accessible 标志设置为指示的布尔值。
//值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。
//值为 false 则指示反射的对象应该实施 Java 语言访问检查。
//      field.setAccessible(true);
//      field.setInt(zhangsan, 30);
//      field.setAccessible(false);
//   }catch (IllegalArgumentException e) {
//          e.printStackTrace();
//   } catch (IllegalAccessException e) {
//          e.printStackTrace();
//   }catch (NoSuchFieldException e) {
//          e.printStackTrace();
//   }catch (SecurityException e) {
//          e.printStackTrace();
//   }
//  System.out.println(zhangsan.getAge());
//  Field[] field1 = clazz.getDeclaredFields();
//  for (int i = 0; i < field1.length; i++) {
//      System.out.println(field1[i].getName());
//  }
//  }
//}

Method类的常用方法

//****************Method类的常用方法*****************************************************/
package com.day2_2015_7_28;
import java.lang.reflect.Method;
public class Test1 {
public static void main(String[] args) {
    Class<? extends Student> clazz = Student.class;
    Method[] methods = clazz.getDeclaredMethods();
    for (int i = 0; i < methods.length; i++) {
        System.out.println(methods[i].getName());
        Class[]parameter = methods[i].getParameterTypes();
        for (int j = 0; j < parameter.length; j++) {
            System.out.println(parameter[j].getName());
        }
    }
}
}

注解

package com.day2_2015_7_28;
public class Student {
   private int age=20;
   public String name;
   public String sex;
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getSex() {
    return sex;
}
public void setSex(String sex) {
    this.sex = sex;
}
}
//**************************************************/
//*************************注解的创建*******************/
package com.day2_2015_7_28;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)//注解类型
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
      String nameAnnotation() default "张三";
      String sexAnnotation();
      int ageAnnotation();
}
//*********************************************/
//***************注解**********************/
package com.day2_2015_7_28;
import java.lang.reflect.Field;
public class Clazz {
   @MyAnnotation(ageAnnotation=5,sexAnnotation="男")
   private Student zhangsan;
   @MyAnnotation(ageAnnotation=5,sexAnnotation="男")
   private Student lisi;
   @MyAnnotation(ageAnnotation=5,sexAnnotation="女")
   private Student wangwu;
   private Student zhaoliu= new Student();
   public Clazz(){
        zhujie();
   }
   public void zhujie(){
       Class<?extends Clazz> cla = Clazz.class;
       Field[] fields = cla.getDeclaredFields();
       for (int i = 0; i < fields.length; i++) {
        Field field = fields[i];
        MyAnnotation annotation =field.getAnnotation(MyAnnotation.class);
        if(annotation !=null){
            field.setAccessible(true);
            Student student = new Student();
            student.setAge(annotation.ageAnnotation());
            student.setName(annotation.nameAnnotation());
            student.setSex(annotation.sexAnnotation());
            try {
                field.set(this, student);
                field.setAccessible(false);
            } catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}
   public Student getZhangsan() {
    return zhangsan;
   }
    public void setZhangsan(Student zhangsan) {
    this.zhangsan = zhangsan;
   }
    public Student getLisi() {
    return lisi;
    }
    public void setLisi(Student lisi) {
    this.lisi = lisi;
    }
    public Student getWangwu() {
    return wangwu;
     }
    public void setWangwu(Student wangwu) {
    this.wangwu = wangwu;
    }
    public Student getZhaoliu() {
    return zhaoliu;
    }
    public void setZhaoliu(Student zhaoliu) {
    this.zhaoliu = zhaoliu;
    }
}
//*********************注解main**********************/
package com.day2_2015_7_28;
public class Test4 {
public static void main(String[] args) {
    Clazz clazz = new Clazz();
    System.out.println(clazz.getZhangsan().getName());

}
}

相关文章

    暂无相关文章
相关栏目:

用户点评