zoukankan      html  css  js  c++  java
  • 2016年8月8日

    1.eclipse调试;
    2.junit:
    新建一个类,在测试方法上面要加上 @Test,
    如果要刚开始或结束时运行的方法,加上 @Before,@After。(如果要在加载时初始化:@BeforeClass @AfterClass)
    断言:
    Assert.assertEquals("期望的结果", 程序返回的结果);Assert有很多方法。

    3.jdk5.0增强。
    静态成员import(一般没什么用。)
    自动装箱,拆箱
    增强for循环(有迭代就能增强for循环):
    java.lang
    接口 Iterable
    实现这个接口允许对象成为 "foreach" 语句的目标。
    增强for循环只适合取数据,不适合赋值。
    更改数据要用传统方式。

    4.可变参数;
    public void sum(int x, int ...num){
    }
    x可有可无

    5.枚举;
    要创建有抽象方法的对象时,创建对象时把方法实现就是了。
    枚举内的构造函数必须是私有的。(10_黑马程序员_带抽象方法的枚举.avi)

    /**
    *
    */
    package jdk1_5增强;

    /**

    • @author Imwang
    • 2016年8月8日

    /
    interface test{
    public abstract String getVaule();
    }
    public class 枚举 {
    public static void main(String[] args) {
    /
    test a = new test(){
    public String getVaule(){
    return null;
    }
    };*/

    	System.out.println(WeekDay.MON.getChinese());
    	
    }
    

    }

    enum WeekDay{
    MON(){
    public String getChinese(){
    return "星期一";
    }
    },
    TUE(){
    public String getChinese(){
    return "星期一";
    }
    },
    WED(){
    public String getChinese(){
    return "星期一";
    }
    },
    THU(){
    public String getChinese(){
    return "星期一";
    }
    },
    FRI(){
    public String getChinese(){
    return "星期一";
    }
    },
    SAT(){
    public String getChinese(){
    return "星期一";
    }
    },
    SUN(){
    public String getChinese(){
    return "星期一";
    }
    };
    private WeekDay() {

    }
    public abstract String getChinese();
    

    }


    2016年8月9日

    6.反射:
    我们拿到类,拿三个东西:
    1.构造方法:创建对象并进行初始化。
    2.属性:封装数据。
    3.方法:执行操作。

    首先要拿到类:三种方法:
    //第一种
    Class cla = Class.forName("包名.类名");
    //第二种
    Class cla = 对象.getClass();
    //第三种
    Class cla = 类.Class;
    三种方法都是拿到类,并封装成Class对象。
    一、得到对象。
    1.拿到构造方法(创建对象并进行初始化)
    1.首先是拿到了对象。
    2.Constructor constructor = cla.getConstructor(para);//para:无参不放,有参:放参数类型的class。拿到构造函数的对象。
    3.类 obj = constructor.newInstance(para);//para:根据需要的参数传递。得到对象并进行了初始化
    2.附录:
    1.另外一种创建对象的方法(好像只能创建默认的无参的对象)
    类 obj = cla.newInstance();
    2.如果构造函数是私有的?!
    首先拿到构造函数的对象:然后
    constructor.setAccessible(true);在创建对象;

    二、运行方法。
    方法:有参,无参;有返回值,无返回值;静态,非静态。
    1.首先,拿到对象,
    2. Method method = cla.getMethed(方法名,para);para:如果有参数:参数类型的class,拿到方法的对象。
    3.执行方法:method.invoke(对象,para)//para:参数
    附录:
    1.如果是私有的,method.setAccessible(true);在执行方法。
    2.执行main方法。
    //为了兼容1.4,当发现是是数组时,会查看数组里面的元素,但里面的元素是一个数组时,就是main方法的参数了,
    method.invoke(null, new Object[]{new String[]{}});

    //转为一个对象???
    method.invoke(null, (Object)new String[]{});
    三、拿到字段。
    1.首先,拿到对象。
    2.拿到字段对象:Field field = cla.getField(字段名);如果是私有cla.getDeclaredField(字段名),还要field.setAccessible(true);
    3.操作field;


    7.内省:
    JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中。特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。名称中的“Bean”是用于Java的可重用软件组件的惯用叫法。
    Introspector
    bean:有多少个get或set方法,就是一个属性,Object有一个getClass方法,所以bean的属性个数是get或set方法加1.

    1.得到bean的所有属性
    首先,拿到beanInfo对象,
    //拿到bean的beanInfo对象(了解其所有属性、公开的方法和事件)
    BeanInfo beanInfo = Introspector.getBeanInfo(jdk1_5增强.Person1.class, Object.class);
    2.拿到bean中所有的属性。
    //PropertyDescriptor 描述 Java Bean 通过一对存储器方法导出的一个属性。
    PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

     for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
         System.out.println(propertyDescriptor.getName());
     }
    

    2.得到bean指定属性:
    1.PropertyDescriptor propertyDescriptor = new PropertyDescriptor("name", Person1.class);
    Method method = propertyDescriptor.getReadMethod();//得到get方法。
    Method methodr = propertyDescriptor.getWriteMethod();//得到set方法。
    methodr.invoke(对象, 参数); //执行方法
    2.目前还不知道

    propertyDescriptor.getPropertyType().getSimpleName() :得到属性的类型的名称;

  • 相关阅读:
    Structured Streaming watermark总结
    技术实践第三期|HashTag在Redis集群环境下的使用
    元宇宙带来沉浸式智能登录?你学会了吗?
    技术实践第一期|友盟+开发者平台Node.js重构之路
    2021年度友盟+ APP消息推送白皮书:工作日68点通勤时间消息送达率每日最高
    技术实践第二期|Flutter异常捕获
    注意啦!还没有支持64位系统的App开发者,务必在12月底前完成这件事!
    一位大牛对于写技术博客的一些建议
    国内常用源开发环境换源(flutter换源,python换源,Linux换源,npm换源)
    初识Socket通讯编程(一)
  • 原文地址:https://www.cnblogs.com/wangbiwei/p/5751305.html
Copyright © 2011-2022 走看看