Java的学习-01

学习java,认识java,熟悉java,精通不了java

2016-05-30 | 阅读

java中的 enum使用

enum也是一个类,所以可以在其中写方法.构造函数只在构造枚举值时被调用,构造函数必须是private的,枚举值是public static final的.以颜色枚举举例:

enum Color{  
                RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN(0,255,0);  
                //构造枚举值,比如RED(255,0,0)  
                private Color(int rv,int gv,int bv){  
                 this.redValue=rv;  
                 this.greenValue=gv;  
                 this.blueValue=bv;  
                }  
  
                public String toString(){  //覆盖了父类Enum的toString()  
                return super.toString()+"("+redValue+","+greenValue+","+blueValue+")";  
                }  
     
                private int redValue;  //自定义数据域,private为了封装。  
                private int greenValue;  
                private int blueValue;  
 }  

而enum中有以下方法:

  • ordinal()方法: 返回枚举值在枚举类种的顺序。这个顺序根据枚举值声明的顺序而定,从0开始.
  • compareTo()方法: Enum实现了java.lang.Comparable接口,因此可以比较象与指定对象的顺序。Enum中的compareTo返回的是两个枚举值的顺序之差。
  • values()方法: 静态方法,返回一个包含全部枚举值的数组。
  • toString()方法: 返回枚举常量的名称。
  • valueOf()方法: 这个方法和toString方法是相对应的,返回带指定名称的指定枚举类型的枚举常量,即由字符串转为枚举值.
  • equals()方法: 比较两个枚举类对象的引用。

fastjson

Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

java 中的反射

反射调用函数 ,一般有三个步骤:

// 得到类的class
Class cls = Class.forName("chb.test.reflect.Student");  
// 得到类中的方法
Method m = cls.getDeclaredMethod("hi",new Class[]{int.class,String.class});  
//然后执行函数
m.invoke(cls.newInstance(),20,"chb");

调用私有函数时会报错,不能访问私有函数,需要设置 :

 m.setAccessible(true);

反射函数的异常,会存放在InvocationTargetExceptiontarget中.