本文已参与「新人创作礼」活动,一起开启掘金创作之路。
枚举:一个一个把类中所有元素列举出来,比如性别类,只有两个元素,可以使用枚举。
package com.hike.javase.enumtest;
import org.omg.Messaging.SyncScopeHelper;
import javax.print.attribute.standard.Severity;
/**
* 对象是可数的特殊类
*/
enum TrafficSingnal{
GO(10),STOP(30),CAREFULL(20); //默认调用无参构造器,想调用有参,必须带上实参。
private int seconds; // 枚举中也可以有属性
private TrafficSingnal(){};
private TrafficSingnal(int seconds){
this.seconds = seconds;
}
public int getSeconds() {
return seconds;
}
public void setSeconds(int seconds) {
this.seconds = seconds;
}
@Override
public String toString() {
return "TrafficSingnal{" +
"seconds=" + seconds +
'}';
}
}
public class EnumTest {
public static void main(String[] args) {
TrafficSingnal go = TrafficSingnal.GO; //直接从类中获取枚举对象
System.out.println(go);
TrafficSingnal stop = TrafficSingnal.valueOf("STOP"); //大小写敏感
System.out.println(stop); //根据常量对象名获取对象
TrafficSingnal[] values = TrafficSingnal.values(); //获取所有的常量对象
System.out.println(values[2]);
int n = Integer.parseInt(args[0]);
TrafficSingnal ts = values[n];
switch (ts){
case GO:
System.out.println("绿灯");
case CAREFULL:
System.out.println("黄灯");
case STOP:
System.out.println("红灯");
}
}
}
注解:是一种特殊的注释,不参与程序的执行,编译器和JVM都能识别到。
package com.hike.javase.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
/**
* @Override的作用是告诉编译器,它修饰的方法要完成方法覆盖,请帮助做条件检查
* @Deprecated作用是告诉使用者,它修饰的目标过期了。可以修饰类,属性,方法,构造器,形参,局部变量
* @SuppressWarnings() 作用是抑制编译器警告,参数可以是一个数组也可以是一个值
*
* 注解:
* 没有属性的,称为标记型注解
* 有属性的,可以进一步传递数据,
*/
// 自定义注解,可以修饰一切.
// @Target对注解的注解,表明注解作用的范围(类(TYPE),属性(FIELD),方法(METHOD),构造器(CONSTRUCTOR)局部变量(LOCAL_VARIABLE)等)
// @Retention作用是约束注解的停留期,常量有:
// RetentionPolicy.SOURCE表示停留期只在源码中;
// RetentionPolicy.CLASS表示停留在class文件中,但在运行时无法获取;
// RetentionPolicy.RUNTIME表示停留期是在运行时,这样可以通过反射处理
@Target(ElementType.METHOD)
@interface MyAnnotation{
int id();//是一个方法,但在这里,叫做属性。属性的写法和方法类似。
String name() default "我是缺省值";//可以有缺省值
}
//@MyAnnotation(id = 1)
@Deprecated
class Person{
@Deprecated
private String name;
private int age;
private String gender;
@SuppressWarnings("unuse")
public Person() {
int n;
}
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
'}';
}
}
public class AnnotationTest {
}