b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Java反射机制详解(2)

电脑杂谈  发布时间:2019-07-08 15:16:32  来源:网络整理
public Field getField(String name)

java 反射_java反射机制_java 反射调用方法

返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。

获得成员变量:

Field aField = clazz.getDeclaredField("name"); //因为name变量是private的,所以不能用getField方法
aField.setAccessible(true);//值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。
aField.set(object,"二大爷");
Object obj = aField.get(object);
System.out.println(obj);

获取构造器

public Constructor<?>[] getDeclaredConstructors()
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)
public Constructor<?>[] getConstructors()
public Constructor<T> getConstructor(Class<?>... parameterTypes)

在构造哈夫曼树时,可以设置一个结构数组huffnode 保存哈夫曼树中各结点的信息,根据二叉树的性质可知,具有n 个叶子结点的哈夫曼树共有2n-1 个结点,所以数组huffnode 的大小设置为2n-1,数组元素的结构形式如下:其中,weight 域保存结点的权值,lchild 和rchild 域分别保存该结点的左、右孩子结点在数组huffnode 中的序号,从而建立起结点之间的关系。 print "我是被装饰的函数"#输出:#我是构造装饰器的工人,当你让我构造装饰器时,我被执行一次 #我是装饰器,当你装饰一个函数式,我就被执行#作为装饰器java反射机制,我将返回包装器函数#最终: decorated_function() 。 print "我是被装饰的函数"decorated_function = decorator_maker()(decorated_function)#我是构造装饰器的工人,当你让我构造装饰器时,我被执行一次 #作为构造装饰器的工人,我得返回装饰器#我是装饰器,当你装饰一个函数式,我就被执行#作为装饰器,我将返回包装器函数# 最后调用:decorated_function() 。

代码示例####

一个关于顾客的类Consumer:

public class Consumer {
    private long id;//私有的
    public String name;//共有的
    /*没参数构造体*/
    public Consumer() {
    }
    /*有参数构造体*/
    public Consumer(long id, String name) {
        this.id = id;
        this.name = name;
    }
    /*getter setter*/
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    /*私有的无参buy方法*/
    private static void buy() {
        System.out.println("私有的无参buy方法");
    }
    /*共有的有参有返回值consume方法*/
    public String consume(String giftName) {
        System.out.println("买了一件礼物: " + giftName);
        return giftName;
    }
}

TestReflect类通过反射得到Consumer类的信息

public class TestReflect {
    public static void getProperty() throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {
        try {
            /* 获取对象类型 */
         Class<?> clazz  = Class.forName("com.Dan.Consumer");
         Object object = clazz.newInstance();
            /* 获取到所有属性 */
            Field[] field = clazz.getDeclaredFields();
            for (Field f:field) {
                //String fieldName = f.getName();// 取到属性名字
                //System.out.println(fieldName);
                System.out.println(f);
            }
            /* 获取到所有的方法,包括私有的,但不包括父类的 */
            Method[] methods = clazz.getDeclaredMethods();
            for (Method m:methods){
                //String methodName = m.getName();
                //System.out.println(methodName);
                System.out.println(m);
            }
            /* 所有的构造体 */
            Constructor[] constructors = clazz.getDeclaredConstructors();
            for (Constructor c:constructors){
                System.out.println(c);
            }
            // 调用方法
            Method method = clazz.getMethod("info", String.class, long.class);//获取方法
            method.invoke(object, "隔壁老王",2017032009);
            //得到属性
            Field aField = clazz.getDeclaredField("name"); //因为name变量是private的,所以不能用getField方法
            aField.setAccessible(true);
            aField.set(object,"二大爷");
            Object obj = aField.get(object);
            System.out.println(obj);
            // 得到构造器
            Constructor constructor = clazz.getDeclaredConstructor(long.class, String.class);
            constructor.newInstance(2016040221, "王小二");
            
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) throws InvocationTargetException, NoSuchMethodException,
            InstantiationException, IllegalAccessException, NoSuchFieldException {
        getProperty();
    }
}
// private long com.Dan.Consumer.id
// public java.lang.String com.Dan.Consumer.name
// public java.lang.String com.Dan.Consumer.getName()
// public void com.Dan.Consumer.setName(java.lang.String)
// public long com.Dan.Consumer.getId()
// private static void com.Dan.Consumer.buy()
// public void com.Dan.Consumer.setId(long)
// public void com.Dan.Consumer.info(java.lang.String,long)
// public com.Dan.Consumer()
// public com.Dan.Consumer(long,java.lang.String)
// 我是:隔壁老王,会员编号: 2017032009。
// 二大爷

写完喽!ㄟ(▔,▔)ㄏㄟ(▔,▔)ㄏㄟ(▔,▔)ㄏ

首先,教师应运用课堂教学引导学生学会思考,梳理知识形成过程的思考脉络.要求学生当天写下这一共同发现过程,重视学生的反思能力培养,包括对课堂知识学习的回忆、归纳、总结、提高、反思、创新.。例如:在如二年级唱游课中要求学生掌握四分音符、八分音符、十六分音符,如果光听老师讲,学生对学习一点儿也没有兴趣而且根本听不懂,这是一个让所有老师都头疼的问题,于是我运用“搭节奏”的游戏,让学生自行组成活动小组,在搭搭拆拆的游戏中学习掌握到新知识.在他们的游戏过程中不单单解决了怎样搭节奏这个知识点,而且继续在研究搭完了节奏之后,怎样拆了节奏再搭新的节奏我们还进行了比赛,看哪一小组节奏搭得又快又好.这样的教学方式,不但使学生掌握了知识点,激发了学生的创造力,而且也锻炼了他们小组合作的能力,因为只有小组成员共同努力,才能得到最后的胜利.。如果要系统的去学知识看书是一种最好的方法,最有效的碎片化阅读方法我觉得是带着问题去收集碎片,然后按照自己的逻辑进行梳理,这样的学习才脚踏实地,能具体实施。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-111388-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 李慧芳
      李慧芳

      1000次911美国消失得差不多了

    • 刘露
      刘露

      中国海军实力也是超过日本的

    热点图片
    拼命载入中...