一、enum(枚举)应用的场合:
权限控制:
package com.xyh5;
public enum AccessRight
{
MANAGER, DEPARTMENT, EMPLOYEE;
}
package com.xyh5;
public class AccessControl
{
public static boolean checkRight(AccessRight accessright)
{
if(accessright == AccessRight.MANAGER)
{
return true;
}
else if(accessright == AccessRight.DEPARTMENT)
{
return false;
}
return false;
}
public static void main(String[] args)
{
AccessRight accessright = AccessRight.valueOf("MANAGER");
System.out.println(checkRight(accessright));
}
}
二、静态导入(static import)
要使用静态成员(方法和变量)我们必须给出提供这个静态成员的类。使用静态导入可以使被导入的类的所有静态变量和静态方法在当前类直接可见,使用这些方法和变量时候就无需给出他们的类名。
import static 包.类.具体方法(或变量)
import static 包.接口
三、Java反射机制
1)Java中,无论生成某个类的多少个对象,这些对象都会对应于同一个Class对象。
2)要想使用反射,首先要获得待处理类或对象所对应的Class对象。
3)获取某个类或某个对象所对应的Class对象的常用3种方式:
a)使用Class类的静态方法forName : Class<?> classType = Class.forName("java.lang.String");
b)是用类的.class语法 : Class<?> classType = String.class;
c)使用对象的getClass()方法: String s = "aa"; Class<?> classType = s.getClass;
4)若想通过类的不带参数的构造方法来生成对象,有两种方式:
a)先获得Class对象,然后通过该Class对象的newInstance()方法直接生成即可:
Class<?> classType = String.class;
Object obj = classType.newInstance();
b)先获得Class对象,然后通过该Class对象获得对应的Constructor对象,再通过该Constructor对象的newInstance()方法生成:
Class<?> classType = Customer.class;
Constructor cons = classType.getConstructor(new Class[]{});
Object obj = cons.newInstance(new Object[]{});
5)若想通过类的带参数的构造方法来生成对象,只有下面一种方法:
Class<?> classType = Customer.class;
Constructor cons = classType.getConstructor(new Class[]{String.class, int.class});
Object obj = cons.newInstance(new Object[]{"zhangsan", 12});
//Integer.TYPE返回的是int类型,Integer.class返回的是Integer类型