首页 > 代码库 > SysUtil(工具类)

SysUtil(工具类)

SysUtil使用最为频繁,代码不多,需要掌握反射跟异步知识。

反射:

反射是指在程序运行时来加载一些类,主要有两点,一:根据类的名称把类load进来。二:获取类的信息,有哪些方法,是什么类型等

加载:Class<?> c= Class.forName("Reflect");

获取信息:c.getName()获取名称

通过调用.newInstance();产生实例也能调用Reflect类所自定义的方法

c.getConstructors();获取所有的构造方法

c.getInterfaces();获取所有接口

c.getSuperclass();获取父类

。。。。还有很多,后面我会用整篇文章专门介绍java的反射

异步:

syschronized(object){}就是一个锁,由于获取id是不允许重复的,所以获取id之前要加锁,获取后别的线程才能获取

 


 

public class SysUtil {

//相当于sys.id一个静态变量,同样我们可以添加sys.qhbm等
private static long currentId = 0;
private static char serverId;
private static Object idLock = new Object();

1.public static String getId()

获取一个新的id

2.private static char intToChar(int val) 

int转换成char,(char) (val + 48)

3.private static String numToString(long num)

把一个long类型的数字转化为String

4.public static String getShortError(Throwable e)

获取最开始的异常原因

5.public static void executeMethod(String classMethodName,HttpServletRequest request, HttpServletResponse response)

5与6用到了java的反射,根据方法的包名,类名,方法名,进行调用,主要代码如下:

Class<?> cls = Class.forName(className);
cls.getMethod(methodName).invoke(cls);

6.public static void executeMethod(String classMethodName)

见5

7.public static int isToOs(InputStream is, OutputStream os)

从输入流写入输出流,并返回流大小(这里可以采用的是数组形式,不是Chanel的方式)

8.public static ByteArrayInputStream getBIS(InputStream is)

这个方法有点奇怪,用到了时候再说

9.public static String readString(Reader reader)

把Reader流的数据读取成String返回

10.public static void closeInputStream(InputStream inputStream)

关闭InputStream

11.public static void error(String msg)

抛出一个异常

SysUtil(工具类)