脚本宝典收集整理的这篇文章主要介绍了Java枚举类和元注解---Java基础宋红康学习笔记,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
public class seasontest {
public static void main(String[] args) {
Season season = Season.AUTUMN;
System.out.PRintln(season);
}
}
//自定义枚举类
class Season{
//1、声明Season对象的属性
private final String name;
private final String desc;
//2、私有化类的构造器
private Season(String name,String desc){
this.name = name;
this.desc = desc;
}
//3、提供枚举类的多个对象 :public static final 的
public static final Season SPRING = new Season("春天", "春暖花开");
public static final Season SUMMER = new Season("夏天", "夏日炎炎");
public static final Season AUTUMN = new Season("秋天", "秋高气爽");
public static final Season WINTER = new Season("冬天", "冰天雪地");
//4、其它诉求,获取枚举类对象的属性
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
@override
public String toString() {
return "Season{" +
"name='" + name + ''' +
", desc='" + desc + ''' +
'}';
}
}
package com.枚举类与注解;
/*
* 使用enum关键字定义枚举类
* 说明:定义的枚举类默认继承于java.lang.Enum类
* */
public class Seasontest1 {
public static void main(String[] args) {
Season1 summer = Season1.SUMMER;
System.out.println(summer);//如果没有重写toString,则打印对象名
}
}
//使用enum关键字定义枚举类
enum Season1{
//1、提供当前枚举类的多个对象 ,多个对象之间用 , 隔开","莫问对象以";"结束
SPRING("春天", "春暖花开"),
SUMMER("夏天", "夏日炎炎"),
AUTUMN("秋天", "秋高气爽"),
Season1("冬天", "冰天雪地");
//2、声明Season对象的属性:private final 修饰
private final String name;
private final String desc;
//3、私有化类的构造器
private Season1(String name,String desc){
this.name = name;
this.desc = desc;
}
//4、其它诉求,获取枚举类对象的属性
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
/* @Override
public String toString() {
return "Season{" +
"name='" + name + ''' +
", desc='" + desc + ''' +
'}';
}*/
}
情况1、实现接口,在enum类中实现抽象接口
//定义一个接口
interface info{
void show();
}
//枚举类继承接口,重写接口中的方法
enum Season1 implements info{
SPRING("春天", "春暖花开"),
SUMMER("夏天", "夏日炎炎"),
AUTUMN("秋天", "秋高气爽"),
Season1("冬天", "冰天雪地");
private final String name;
private final String desc;
private Season1(String name,String desc){
this.name = name;
this.desc = desc;
}
//重写接口中的方法
@Override
public void show() {
System.out.println("jdioasjdiojao");
}
}
情况二、在枚举类中的 每个对象中重写接口中的方法
enum Season1 implements info{
SPRING("春天", "春暖花开"){
@Override
public void show() {
System.out.println("春天");
}
},
SUMMER("夏天", "夏日炎炎"){
@Override
public void show() {
System.out.println("夏天");
}
},
AUTUMN("秋天", "秋高气爽"){
@Override
public void show() {
System.out.println("秋天");
}
},
Season1("冬天", "冰天雪地"){
@Override
public void show() {
System.out.println("冬天");
}
};
private final String name;
private final String desc;
private Season1(String name,String desc){
this.name = name;
this.desc = desc;
}
}
/*
* 自定义注解
* 1、注解声明为:@interface
* 2、内部定义成员,通常使用value表示
* 3、可以指定成员的默认值,使用default定义
* 4、如果自定义注解没有成员,表示是一个表示作用
*
* 如果注解有成员,在使用注解时,需要指明成员的值
* */
public @interface MyAnnotation {
String value() default "456";
}
//使用注解
@MyAnnotation("123")
class PErson{
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void walk(){
System.out.println("人走路");
}
public void eat(){
System.out.println("人吃饭");
}
}
jdk8之前实现注解可重复
@MyAnnotation(value="asiojd")
@MyAnnotation(value="asio")//报错
public class Person {
String value() default "456";
}
//要实现可重复注解需要
//1、新建一个枚举类
public @interface MyAnnotions {
MyAnnotation [] value();
}
//2、实现注解的重复性
@MyAnnotions({@MyAnnotation(value="asio"),@MyAnnotation(value="asiojd")})
public class Person {
}
jdk8之后实现注解可重复
@Repeatable()
1)在MyAnnoattion上声明@Repeatable,成员值为MyAnnotations.class
2)MyAnnotation的target和Retention等元注解和MyAnnotations相同
class Generic<@MyAnnotation T>{
public void show() throws @MyAnnotation RuntimeException{
ArrayList<@MyAnnotation String>list = new ArrayList<>();
int num = (@MyAnnotation int)10L;
}
}
@Inherited
@Retention(Retentionpolicy.RUNTIME)
@Target({ElementType.TYPE,ElementType.FIELD,ElementType.PARAMETER,ElementType.CONSTRUCTOR,ElementType.LOCAL_VARIABLE,ElementType.TYPE_PARAMETER,ElementType.TYPE_USE})
public @interface MyAnnotation {
String value() default "456";
}
以上是脚本宝典为你收集整理的Java枚举类和元注解---Java基础宋红康学习笔记全部内容,希望文章能够帮你解决Java枚举类和元注解---Java基础宋红康学习笔记所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。