Java(2012/2/5)
来源:互联网 发布:手机js脚本例子 编辑:程序博客网 时间:2024/06/08 00:28
一、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类型
- Java(2012/2/5)
- Java(2012/2/2)
- Java(2012/2/1)
- Java(2012/2/3)
- Java(2012/2/4)
- Java(2012/2/6)
- Java(2012/2/7)
- Java(2012/2/8)
- Java(2012/2/12)
- JAVA(2012/2/13)
- JAVA 2012/2/13
- Java(2012/2/14)
- java 2-5
- Java(5-2)
- 【java 2】java泛型
- 【Java】(2)Java反射
- Java web(2012/2/17)
- Java web(2012/2/18)
- 图论解题报告导引
- Hibernate+spring数据延迟加载问题解决方案。
- 为什么javascript加载xml文件,在Chrome下不成功!
- 使用二级指针改变二维数组元素值
- 正则表达式 易混淆部分
- Java(2012/2/5)
- fedora 16 解决 I can't find file `ptmr7t' 之问题
- 模板
- VB工程--百例69--消息框
- 2440改造成锂电池供电
- 求C语言疑难知识点及怪问题
- 矩阵乘法
- Programming Clojure学习笔记——使用序列统一数据
- Java动态代理剖析(二)