2020-10-07课堂笔记

本文详细介绍了Java中的枚举(enum)特性和映射概念。枚举用于定义固定数量的常量,如四季、星期等,不能继承其他类但可实现接口。映射涉及反射机制,通过Class类获取类的构造器、字段和方法信息。枚举案例展示了如何创建和使用枚举,包括定义枚举实例、属性和方法,并进行枚举遍历。在主函数中测试了枚举类的方法调用。
摘要由CSDN通过智能技术生成

主知识点

1.枚举enum

特点:

  • 普通类class可以使用extends去继承其他类,而enum 不能使用 extends 关键字继承其他类,因为 enum 已经继承了 java.lang.Enum(java是单一继承
  • 枚举通常具有枚举实例,实例之间以逗号分隔,以分号结尾
  • 枚举也可以有自己的属性和方法,以及构造函数等
  • 枚举也可以像普通类一样去实现接口
  • 在哪些情形下使用枚举:
    比如列举四季12月,一周七天,一个系统的管理员身份,教师身份,学生身份等能被列出的字符串

2.映射

  • class
  • constructor
  • modifier
  • field
  • method
Class class = Class.forName("com.ddb.javacore.reflect.Person"); //包名+类名
Student student = class.newInstance(); //调用了Employee的无参数
//构造器
 Constructor c=clazz.getConstructor([可选参数]);
 Constructor [] c=clazz.getConstructors();
  //成员变量
 Field field=clazz.getDeclaredField([可选参数]);
 Field []field=clazz.getDeclaredFields();
 // 权限不够时,set方法或者暴力打破权限
field.setAccessible(true); //使用反射机制可以打破封装性,但导致了java对象的属性不安全。  
 field.set(student,"值");

3.枚举案例(以四季为例)

1.创建枚举对象

public enum Season {
      Spring("和风",0){
    	  @Override
    	  public void animalshout(){
    		  System.out.println("青蛙叫");
    	  }

      },Summer("炎热",1),Autumn("凉爽",2),Winter("寒冬",3);
      String name;
      int num;
      
     private Season(String name,int num) {
		// TODO Auto-generated constructor stub
    	
    	 this.name=name;
    	 this.num=num;
	}

	public void animalshout() {
		// TODO Auto-generated method stub
         System.out.println("没有动物叫!");
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
      
}

2.主函数内测试枚举类

    System.out.println("季节:"+Season.Spring+"描述:"+Season.Spring.getName()+"序号:"+Season.Spring.getNum());
	
	Season.Spring.animalshout();//调用重写后的方法
	Season.Summer.animalshout();//没有重写故调用之前的方法

运行结果:
季节:Spring描述:和风序号:0
青蛙叫
没有动物叫!

3.遍历枚举对象

	for (Season e : Season.values()) {
        System.out.println(e.toString());
    }

遍历结果:
Spring
Summer
Autumn
Winter

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值