zoukankan      html  css  js  c++  java
  • 从入门到放弃的第5周(面向对象)......day.1.。。。。。泛型和枚举;

     

     

    1,枚举 Enum 1.5引入 确保某个类型的实例是预先定义的,不能由使用者创建 ,

    单例模式是否可由枚举实现?
    枚举类型是java.lang.Enum抽象类的子类型
    声明一个枚举:使用enum
    内容主要声明若干个静态常量实例
    也可以有属性,构造方法(private修饰)

     

     

    任务:
    声明一个表示季节的枚举(Season) 四个实例(Spring,Summer,Autumn,Winter)
    public enum Season{
    SPRING,SUMMER,AUTUMN,WINTER
    }
    在一个新的类中写一个方法,接收一个Season类型的参数,使用switch-case,条件成立输出提示
    在main测试

    public class Enum {
    
    public void fang(Season s){
    switch (s) {
    case Spring:
    System.out.print("春");
    break;
    case Summer:
    System.out.print("夏");
    break;
    case Autumn:
    System.out.print("秋");	
    break;
    case Winter:
    System.out.print("冬");
    break;
    default:
    break;
    }

    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub

    Enum enum1=new Enum();
    enum1.fang(Season.Spring);


    }

    }

     

    EnumSet存储枚举类型的元素 EnumMap存储元素的键是枚举

    2,泛(范)型 1.5引入

     


    保证类型安全,消除了强制类型转换

    实现泛型版本的Stack
    Pager<E>{
    private List<E> data;
    }
    //只能接受Number类型
    public static <T> void add1(T t1,T t2) {
    }

    public class Job1 {
    
    
    public static <T extends Number> Integer add1(T x ,T y){
    
    return x.intValue()+y.intValue();
    
    }
    
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.print( add1(10,0.1));
    }
    
    }
    
     
    

      

    3,Lambda表达式(二)

     


    Lambda表达式中使用外部变量
    循环中的Lambda表达式
    方法引用
    java.util.function包

     


    4,反射 Reflection

     


    目的:
    1,运行时获取类的信息
    2,动态创建实例,调用方法

    Class类;
    搞清楚getDeclaredMethods与getMethods的区别
    1.输出某个类的所有的方法(本类中的public,private,。。。方法,继承而来的方法)
    2,输出某个类的所有的Filed(本类中的public,private,。。。方法,继承而来的Filed)
    3, 输出某个类的所有的构造方法
    4,得到某个方法的信息,是否是静态的,是否是final
    5,得到某个Field
    6,得到包的信息
    7,得到父类信息
    8,得到泛型类的类型的信息

    java.lang.reflect.Modifier
    
    
    public class Job2 {
    public static void main(String[] args){
    Class<Myclass> myint= Myclass.class;
    
    //公共方法fulei
    //Method[] method1=myint.getMethods();
    //for (Method method2 : method1) {
    //	System.out.println(method2);
    //}	
    
    //输出自身所有方法 不包含父类
    /*Method[] method2=myint.getDeclaredMethods();
    for (Method method : method2) {
    System.out.println(method);
    }
    */
    //输出自身所有域 不包含父类
    /*Field[] file1=myint.getDeclaredFields();
    for (Field field : file1) {
    System.out.println(field);
    System.out.println(" "+field.getType());
    }
    */
    
    
    //公共yu
    /*Field[] file2=myint.getFields();
    for (Field field : file2) {
    System.out.println(field);
    }
    */
    
    //查找方法根据方法名和参数类型
    /*
    try {
    Method method=myint.getDeclaredMethod("aa");
    System.out.println(method);
    } catch (NoSuchMethodException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (SecurityException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    */
    
    //查找类中所有的构造函数
    /*
    Constructor[] x=myint.getDeclaredConstructors();
    for (Constructor field : x) {
    System.out.println(field);
    }
    */
    
    
    
    //根据名字查找属性
    /*
    Field file2;
    try {
    file2 = myint.getDeclaredField("a");
    System.out.println(file2);
    } catch (NoSuchFieldException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (SecurityException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    */
    
    
    //查找类所在的包
    /*
    Package package1=myint.getPackage();
    System.out.print(package1);
    */
    
    //查找所在的父类
    /*
    Class class1=myint.getSuperclass();
    System.out.print(class1);
    */
    
    
    
    }
    

      

    任务: 声明一个JavaBean
    public class User{
    private String name;
    private int age;

    public void setName(String name){
    this.name=name;
    }
    public String getName(){
    return this.name;
    }
    .......
    }


    设计一个方法,获取其中所有属性的get与set方法
    1,先找到所有的私有属性
    2,"set"+"Name" setMethod()
    "get"+"Name" getMethod()

    public class Job1 {
    
    public static void name(Class<?> c ) {
    
    Field[] fields=c.getDeclaredFields();
    for (Field field : fields) {
    //	if (Modifier.isPrivate(field.getModifiers())) {
    //	}
    String getname="get"+field.getName().substring(0,1).toUpperCase()+field.getName().substring(1);
    String setname="set"+field.getName().substring(0,1).toUpperCase()+field.getName().substring(1);	
    try {
    Method getMethod=c.getDeclaredMethod(getname);
    Method setMethod=c.getDeclaredMethod(setname,field.getType());
    System.out.println(getMethod);
    System.out.println(setMethod);
    } catch (NoSuchMethodException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (SecurityException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }	
    }	
    }	
    }
    

      

    public class Job1test {
    
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Job1 job1=new Job1();
    User user=new User();
    job1.name(user.getClass());
    
    }
    
    }
    
    
    public class User {
    private int aa;
    private int bb;
    
    private int cc;
    private int dd;
    public int getAa() {
    return aa;
    }
    public void setAa(int aa) {
    this.aa = aa;
    }
    public int getBb() {
    return bb;
    }
    public void setBb(int bb) {
    this.bb = bb;
    }
    public int getCc() {
    return cc;
    }
    public void setCc(int cc) {
    this.cc = cc;
    }
    public int getDd() {
    return dd;
    }
    public void setDd(int dd) {
    this.dd = dd;
    }
    }
    

      



     

  • 相关阅读:
    家庭记账本安卓版开发:第一天
    家庭记账本安卓版开发:第二天
    通过Android的API对Sqlite数据库进行操作
    通过SQL语句操作Sqlite数据库
    Activity组件(四):通过requestCode和resultCode来实现Activity间的数据回传
    Activity组件(三):通过对象实现信息添加及展示
    家庭记账本安卓版开发:第三天
    梦断代码(三)
    MacType使用配置
    去掉win7快捷方式箭头及修复锁定到任务栏失效
  • 原文地址:https://www.cnblogs.com/suxiao666/p/11415086.html
Copyright © 2011-2022 走看看