(2)示例(测试JDK中具有可变参数的类Arrays.asList()方法)
public static void main(String[] args) {
List list = Arrays.asList(1,2,3,4,5);//传递多个参数
String[] arrStrs = {"a","bb","ccc"};
list = Arrays.asList(arrStrs);//传递对象数组
list = Arrays.asList();//无参
System.out.println(list);//输出为空即:[]
int[] ints = {1,2,3,4,5};//基本类型数组,注意区别对象数组
list = Arrays.asList(ints);
System.out.println(list);// 输出为对象的字符串,例如:[[I@459189e1]
}
private static void demo(){
Person[] arrPers = new Person[3];
person[0] = new Person("joey","30");
person[1] = new Person("chanle","31");
person[2] = new Person("ross","32");
for(Person p : arrPers){
System.out.println(p.getName + ":" + p.getAge());
}
}
public enum Color {
RED,GREEN,BLANK,YELLOW
}
enum Signal {
GREEN, YELLOW, RED
}
public class TrafficLight {
Signal color = Signal.RED;
public void change() {
switch (color) {
case RED:
color = Signal.GREEN;
break;
case YELLOW:
color = Signal.RED;
break;
case GREEN:
color = Signal.YELLOW;
break;
}
}
}
//如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); //先写实例,且最后要有分号.
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
// 普通方法
public static String getName(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
// get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
//覆盖方法
@Override
public String toString() {
return this.index+"_"+this.name;
}
}
public interface Behaviour {
void print();
String getInfo();
}
public enum Color implements Behaviour{
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
//接口方法
@Override
public String getInfo() {
return this.name;
}
//接口方法
@Override
public void print() {
System.out.println(this.index+":"+this.name);
}
}
public interface Food {
enum Coffee implements Food{
BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
}
enum Dessert implements Food{
FRUIT, CAKE, GELATO
}
}
//首先,注解类:
@Retention(RetentionPolicy.RUNTIME)
@Target(value=ElementType.METHOD)
public @interface MyTest {
}
//其次,测试类:
public class TestOne {
@MyTest
public void abc(){
System.out.print("abc");
}
@MyTest
public void def(){
System.out.print("def");
}
public void hello(){
System.out.print("hello");
}
}
//最后,注解处理类:
public class MyTestMain {
public static void main(String[] args)throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入要测试的类"); //输入TestOne的完全限定名
String clazzName = br.readLine();
Class clazz = Class.forName(clazzName);
Object obj = clazz.newInstance();
Method[] methods = clazz.getMethods();
for(Method m : methods){
if(m.isAnnotationPresent(MyTest.class)){
m.invoke(obj); //最后输出 abcdef,即添加了@MyTest注解的方法被执行了.
}
}
}
}