Day2-反射

总结:
1.获取成员变量
getFields() 获取所有public得成员变量
getField(xxx) 指定
getDeclaredFields() 获取所有得成员变量,无视private
getDeclaredField(xxx)

//
public java.lang.String  cn.itcast.demain.persion.a
public java.lang.String  cn.itcast.demain.persion.b
public java.lang.String  cn.itcast.demain.persion.c
-----------------------
null
persion{name='null', age=0, a='zhangsan',b='null', c='null', d='null'}
========================
private java.lang.String cn.itcast.demain.persion.name
private int cn.itcast.demain.persion.age
public java.lang.String  cn.itcast.demain.persion.a
public java.lang.String  cn.itcast.demain.persion.b
public java.lang.String  cn.itcast.demain.persion.c
private java.lang.String  cn.itcast.demain.persion.d
-------------------------
null

2.获取构造方法
getConstructors()
getConstructor(xxx)
getDeclaredConstructors()
getDeclaredConstructor(xx)

public cn.itcast.demain.persion(java.lang.String,int)
public cn.itcast.demain.persion()
-----------------------------
public cn.itcast.demain.persion(java.lang.String,int)
persion{name='zhangsan', age=1, a='null',b='null', c='null', d='null'}
Process finished with exit code 0

3.获取成员方法:
getMethonds()
getMethond(xxx)
getDeclaredMethonds
getDeclaredMethond(xxx)

eat...
eat...------------------------
cn.itcast.demain.persion

4.获取类名
getClass();

5.暴力反射:可让无视private
d.setAccessible(true);

/**
 * 多用于配置文件中。读取文件,加载类
 */
Class cls1 = Class.forName("cn.itcast.demain.persion");
System.out.println(cls1);

/**
 * 多于用参数的传递
 */
Class cls2 = persion.class;
System.out.println(cls2);

/**
 * 多用于对象的获取字节码得方式
 */
persion p=new persion();
Class cls3 = p.getClass();
System.out.println(cls3);

ReflectDemo1

/**
 * 获取功能:
 * 2.获取构造方法
 * getDeclaredConstructors()
 * 返回一个反映 Constructor对象表示的类声明的所有 Constructor对象的数组 类 。
 * 3.获取成员方法
 */
//0.获取Persion得Class对象
Class persionClass = persion.class;
        /**
     *  1.获取成员变量
     *   Field[] getFields()
     *   Field getField(String name)
     *   Field[] getDeclaredFields()
     *   Field getDeclaredField(String name)
     */
//1.Field[] getFields() 获取所有public修饰的成员变量
Field[] fields = persionClass.getFields();
for (Field field : fields) {
    System.out.println(field);
}
System.out.println("-----------------------");

//2.Field getField(String name) 获取指定的public修饰的成员变量
Field a = persionClass.getField("a");
//获取成员变量a的值
persion p =new persion();
Object value = a.get(p);
System.out.println(value);
//设置a的值
a.set(p,"zhangsan");
System.out.println(p);

System.out.println("========================");
//3.Field[] getDeclaredFields() //可以获取所有的 不用考虑修饰符
Field[] declaredFields = persionClass.getDeclaredFields();
for (Field declaredField : declaredFields) {
    System.out.println(declaredField);
}

System.out.println("-------------------------");
//4.Field getDeclaredField(String name)
Field d = persionClass.getDeclaredField("d");
//忽略访问权限修饰符得安全检查
d.setAccessible(true);//暴力反射

Object value1 = d.get(p);
System.out.println(value1);

ReflectDemo2

Class<persion> persionClass3 = persion.class;

//1.
Constructor[] constructors = persionClass3.getConstructors();
for (Constructor constructor : constructors) {
    System.out.println(constructor);
}
System.out.println("-----------------------------");
//2.
Constructor constructor3 = persionClass3.getConstructor(String.class, int.class);
System.out.println(constructor3);


//construcetor:构造方法,创建对象;
Object name = constructor3.newInstance("zhangsan", 1);
System.out.println(name);

ReflectDemo3

Class<persion> persionClass4 = persion.class;

//1.获取指定名称方法
Method eat_method = persionClass4.getMethod("eat");
persion p=new persion();
//执行方法
eat_method.invoke(p);

Method eat1 = persionClass4.getMethod("eat", String.class);
eat1.invoke(p,"饭");


System.out.println("-----------------");

Method[] methods = persionClass4.getMethods();
for (Method method : methods) {
    System.out.println(method);

    String name = method.getName();
    System.out.println(name);
}


System.out.println("------------------------");
//获取类名
String name1 = persionClass4.getName();
System.out.println(name1);

Person

public class persion {
    private String name;
    private  int age;
    public String a;
    public String b;
    public String c;
    private String d;
    @Override
    public String toString() {
        return "persion{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", a='" + a + '\'' +
                ", b='" + b + '\'' +
                ", c='" + c + '\'' +
                ", d='" + d + '\'' +
                '}';
    }
    public persion() {
    }
    public persion(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void eat(){
        System.out.println("eat...");
    }
    public void eat(String food){
        System.out.println("eat..."+food);
    }
}
项目:使用AngularJs编写的简单 益智游戏(附源代码)  这是一个简单的 javascript 项目。这是一个拼图游戏,也包含一个填字游戏。这个游戏玩起来很棒。有两个不同的版本可以玩这个游戏。你也可以玩填字游戏。 关于游戏 这款游戏的玩法很简单。如上所述,它包含拼图和填字游戏。您可以通过移动图像来玩滑动拼图。您还可以选择要在滑动面板中拥有的列数和网格数。 另一个是填字游戏。在这里你只需要找到浏览器左侧提到的那些单词。 要运行此游戏,您需要在系统上安装浏览器。下载并在代码编辑器中打开此项目。然后有一个 index.html 文件可供您修改。在命令提示符中运行该文件,或者您可以直接运行索引文件。使用 Google Chrome 或 FireFox 可获得更好的用户体验。此外,这是一款多人游戏,双方玩家都是人类。 这个游戏包含很多 JavaScript 验证。这个游戏很有趣,如果你能用一点 CSS 修改它,那就更好了。 总的来说,这个项目使用了很多 javascript 和 javascript 库。如果你可以添加一些具有不同颜色选项的级别,那么你一定可以利用其库来提高你的 javascript 技能。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值