【Class类与Java反射 】 【Method类的常用方法 】 【注解】,classmethod
分享于 点击 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());
}
}
相关文章
- 暂无相关文章
用户点评