public abstract class Lang extends Object
限定符和类型 | 字段和说明 |
---|---|
static int |
HASH_BUFF_SIZE |
static boolean |
isAndroid
当前运行的 Java 虚拟机是否是在安卓环境
|
构造器和说明 |
---|
Lang() |
限定符和类型 | 方法和说明 |
---|---|
static <T> T[] |
array(T... eles)
较方便的创建一个数组,比如:
String[] strs = Lang.array("A", "B", "A"); => ["A","B","A"]
|
static Object |
array2array(Object array,
Class<?> eleType)
将数组转换成另外一种类型的数组。
|
static <T,E> List<E> |
array2list(Object array,
Class<E> eleType)
将数组转换成一个列表。
|
static <T> List<T> |
array2list(T[] array)
将数组转换成一个列表。
|
static <T extends Map<Object,Object>> |
array2map(Class<T> mapClass,
Object array,
String keyFieldName)
将一个数组变成 Map
|
static <T> Object[] |
array2ObjectArray(T[] args,
Class<?>[] pts)
将数组转换成Object[] 数组。
|
static <T> T[] |
arrayFirst(T e,
T[] eles)
将一个对象添加成为一个数组的第一个元素,从而生成一个新的数组
|
static <T> T[] |
arrayLast(T[] eles,
T e)
将一个对象添加成为一个数组的最后一个元素,从而生成一个新的数组
|
static <T> T[] |
arrayUniq(T... eles)
较方便的创建一个没有重复的数组,比如:
String[] strs = Lang.arrayUniq("A","B","A"); => ["A","B"]
String[] strs = Lang.arrayUniq(); => null
返回的顺序会遵循输入的顺序
|
static void |
Break()
打断 each 循环
|
static <E> E[] |
collection2array(Collection<?> col,
Class<E> eleType)
将集合变成指定类型的数组
|
static <E> E[] |
collection2array(Collection<E> coll)
将集合变成数组,数组的类型为集合的第一个元素的类型。
|
static <E> List<E> |
collection2list(Collection<?> col,
Class<E> eleType)
将集合编程变成指定类型的列表
|
static <E> List<E> |
collection2list(Collection<E> col)
将集合变成 ArrayList
|
static <T extends Map<Object,Object>> |
collection2map(Class<T> mapClass,
Collection<?> coll,
String keyFieldName)
将一个集合变成 Map。
|
static ComboException |
comboThrow(Throwable... es) |
static <T> StringBuilder |
concat(int offset,
int len,
Object c,
T[] objs)
将一个数组的部分元素转换成字符串
每个元素之间,都会用一个给定的字符分隔
|
static <T> StringBuilder |
concat(int offset,
int len,
T[] array)
将一个数组部分元素拼合成一个字符串
|
static <T> StringBuilder |
concat(Object c,
Collection<T> coll)
将一个集合转换成字符串
每个元素之间,都会用一个给定的字符分隔
|
static StringBuilder |
concat(Object c,
int[] vals)
将一个整型数组转换成字符串
每个元素之间,都会用一个给定的字符分隔
|
static <T> StringBuilder |
concat(Object c,
Iterator<T> it)
将一个迭代器转换成字符串
每个元素之间,都会用一个给定的字符分隔
|
static StringBuilder |
concat(Object c,
long[] vals)
将一个长整型数组转换成字符串
每个元素之间,都会用一个给定的字符分隔
|
static <T> StringBuilder |
concat(Object c,
T[] objs)
将一个数组转换成字符串
每个元素之间,都会用一个给定的字符分隔
|
static <T> StringBuilder |
concat(T[] objs)
将一个数组所有元素拼合成一个字符串
|
static <T> StringBuilder |
concatBy(String ptn,
Object c,
T[] objs)
将一个数组转换成字符串
所有的元素都被格式化字符串包裹。
|
static <T> StringBuilder |
concatBy(String fmt,
T[] objs)
将一个数组转换成字符串
所有的元素都被格式化字符串包裹。
|
static <T> boolean |
contains(T[] array,
T ele)
判断一个数组内是否包括某一个对象。
|
static Context |
context()
创建一个新的上下文对象
|
static Context |
context(Map<String,Object> map)
根据一个 Map 包裹成一个上下文对象
|
static Context |
context(String str)
根据一段 JSON 字符串,生产一个新的上下文对象
|
static Context |
contextf(String fmt,
Object... args)
根据一段 JSON 字符串,生产一个新的上下文对象
|
static void |
Continue()
继续 each 循环,如果再递归,则停止递归
|
static void |
convertMapKey(Object obj,
MapKeyConvertor mkc,
boolean recur)
将一个 Map 所有的键都按照回调进行修改
本函数遇到数组或者集合,会自动处理每个元素
|
static <T> T |
copyProperties(Object origin,
T target) |
static <T> T |
copyProperties(Object origin,
T target,
String active,
String lock,
boolean ignoreNull,
boolean ignoreStatic) |
static String |
digest(String algorithm,
byte[] bytes,
byte[] salt,
int iterations)
从字节数组计算出数字签名
|
static String |
digest(String algorithm,
CharSequence cs)
从字符串计算出数字签名
|
static String |
digest(String algorithm,
File f)
从数据文件计算出数字签名
|
static String |
digest(String algorithm,
InputStream ins)
从流计算出数字签名,计算完毕流会被关闭
|
static <T> void |
each(Object obj,
boolean loopMap,
Each<T> callback)
用回调的方式,遍历一个对象,可以支持遍历
数组
集合
Map
单一元素
|
static <T> void |
each(Object obj,
Each<T> callback)
用回调的方式,遍历一个对象,可以支持遍历
数组
集合
Map
单一元素
|
static <T extends Collection<E>,E> |
enum2collection(Enumeration<E> enums,
T cols)
将枚举对象,变成集合
|
static <T> Enumeration<T> |
enumeration(Collection<T> col)
返回一个集合对象的枚举对象。
|
static boolean |
equals(Object a0,
Object a1)
判断两个对象是否相等。
|
static StringBuilder |
execOutput(String[] cmd,
Charset charset) |
static StringBuilder |
execOutput(String cmd,
Charset charset) |
static <C extends Collection<T>,T> |
fill(C coll,
T[]... objss)
将一个或者多个数组填入一个集合。
|
static Map<String,Object> |
filter(Map<String,Object> source,
String prefix,
String include,
String exclude,
Map<String,String> keyMap)
map对象浅过滤,返回值是一个新的map
|
static <T> T |
first(Collection<T> coll)
获取集合中的第一个元素,如果集合为空,返回 null
|
static <K,V> Map.Entry<K,V> |
first(Map<K,V> map)
获得表中的第一个名值对
|
static Object |
first(Object obj)
如果是数组或集合取得第一个对象。
|
static String |
fixedHexString(byte[] hashBytes) |
static <T> Class<T> |
forName(String name,
Class<T> type)
强制从字符串转换成一个 Class,将 ClassNotFoundException 包裹成 RuntimeException
|
static <T> T |
get(T[] array,
int index)
安全的从一个数组获取一个元素,容忍 null 数组,以及支持负数的 index
如果该下标越界,则返回 null
|
static Type |
getFieldType(Mirror<?> me,
Field field)
当一个类使用
|
static Type |
getFieldType(Mirror<?> me,
String field)
当一个类使用
|
static Type |
getGenericsType(Mirror<?> me,
Type type)
当一个类使用
|
static Type[] |
getGenericsTypes(Type type)
返回一个 Type 的泛型数组, 如果没有, 则直接返回null
|
static String |
getIP(javax.servlet.http.HttpServletRequest request)
获得访问者的IP地址, 反向代理过的也可以获得
|
static Type[] |
getMethodParamTypes(Mirror<?> me,
Method method)
当一个类使用
|
static Object |
getPrimitiveDefaultValue(Class<?> pClass)
获取基本类型的默认值
|
static String |
getStackTrace(Throwable e)
将一个抛出对象的异常堆栈,显示成一个字符串
|
static Class<?> |
getTypeClass(Type type)
获取一个 Type 类型实际对应的Class
|
static RuntimeException |
impossible()
生成一个不可能的运行时异常
|
static Reader |
inr(CharSequence cs)
根据一段文本模拟出一个文本输入流对象
|
static InputStream |
ins(CharSequence cs)
根据一段文本模拟出一个输入流对象
|
static boolean |
isCauseBy(Throwable e,
Class<? extends Throwable> causeType) |
static boolean |
isEmpty(Object obj)
判断一个对象是否为空。
|
static <T> boolean |
isEmptyArray(T[] ary)
判断一个数组是否是空数组
|
static boolean |
isJDK6()
当前运行的 Java 虚拟机是 JDK6 的话,则返回 true
|
static boolean |
isWin()
判断当前系统是否为Windows
|
static int |
length(Object obj)
获得一个对象的长度。
|
static <T> ArrayList<T> |
list(T... eles)
较方便的创建一个列表,比如:
List<Pet> pets = Lang.list(pet1, pet2, pet3);
注,这里的 List,是 ArrayList 的实例
|
static List<Object> |
list4(String str)
根据一段字符串,生成一个List 对象。
|
static Class<?> |
loadClass(String className)
使用当前线程的ClassLoader加载给定的类
|
static Class<?> |
loadClassQuite(String className) |
static <T extends Throwable> |
makeThrow(Class<T> classOfT,
String format,
Object... args)
根据格式化字符串,生成一个指定的异常。
|
static RuntimeException |
makeThrow(String format,
Object... args)
根据格式化字符串,生成运行时异常
|
static NutMap |
map(String str)
根据一段字符串,生成一个 Map 对象。
|
static NutMap |
map(String key,
Object v)
创建一个一个键的 Map 对象
|
static <T> T |
map2Object(Map<?,?> src,
Class<T> toType)
根据一个 Map,和给定的对象类型,创建一个新的 JAVA 对象
|
static NutMap |
mapf(String fmt,
Object... args)
根据一个格式化字符串,生成 Map 对象
|
static String |
md5(CharSequence cs)
获取指定字符串的 MD5 值
|
static String |
md5(File f)
获取指定文件的 MD5 值
|
static String |
md5(InputStream ins)
获取指定输入流的 MD5 值
|
static <T> T[] |
merge(T[]... arys)
将多个数组,合并成一个数组。
|
static RuntimeException |
noImplement()
生成一个未实现的运行时异常
|
static void |
notifyAll(Object lock)
通知对象的同步锁
|
static Map<String,Object> |
obj2map(Object obj)
将对象转换成 Map
|
static <T extends Map<String,Object>> |
obj2map(Object obj,
Class<T> mapType)
将对象转换成 Map
|
static NutMap |
obj2nutmap(Object obj)
将对象转为 Nutz 的标准 Map 封装
|
static StringOutputStream |
ops(StringBuilder sb)
根据一个 StringBuilder 模拟一个输出流对象
|
static Writer |
opw(StringBuilder sb)
根据一个 StringBuilder 模拟一个文本输出流对象
|
static boolean |
parseBoolean(String s)
将字符串解析成 boolean 值,支持更多的字符串
1 | 0
yes | no
on | off
true | false
|
static void |
quiteSleep(long millisecond)
对Thread.sleep(long)的简单封装,不抛出任何异常
|
static String |
readAll(Reader reader)
从一个文本输入流读取所有内容,并将该流关闭
|
static <T> void |
reverse(T[] arrays)
将指定的数组的内容倒序排序。
|
static void |
runInAnThread(Runnable runnable) |
static String |
runRootPath() |
static <T> Set<T> |
set(T... eles)
创建一个 Hash 集合
|
static String |
sha1(CharSequence cs)
获取指定字符串的 SHA1 值
|
static String |
sha1(File f)
获取指定文件的 SHA1 值
|
static String |
sha1(InputStream ins)
获取指定输入流的 SHA1 值
|
static String |
simpleMetodDesc(Method method) |
static void |
sleep(long ms)
一个便利的方法,将当前线程睡眠一段时间
|
static Number |
str2number(String s)
将字符串,变成数字对象,现支持的格式为:
null - 整数 0
23.78 - 浮点 Float
0x45 - 16进制整数 Integer
78L - 长整数 Long
69 - 普通整数 Integer
|
static byte[] |
toBytes(char[] cs)
将字符数组强制转换成字节数组。
|
static byte[] |
toBytes(int[] is)
将整数数组强制转换成字节数组。
|
static Throwable |
unwrapThrow(Throwable e) |
static void |
wait(Object lock,
long ms)
一个便利的等待方法同步一个对象
|
static <T> T[] |
without(T[] objs,
T val)
清除数组中的特定值
|
static RuntimeException |
wrapThrow(Throwable e)
用运行时异常包裹抛出对象,如果抛出对象本身就是运行时异常,则直接返回。
|
static <T extends Throwable> |
wrapThrow(Throwable e,
Class<T> wrapper)
用一个指定可抛出类型来包裹一个抛出对象。
|
static RuntimeException |
wrapThrow(Throwable e,
String fmt,
Object... args)
将抛出对象包裹成运行时异常,并增加自己的描述
|
static void |
writeAll(Writer writer,
String str)
将一段字符串写入一个文本输出流,并将该流关闭
|
static DocumentBuilder |
xmls()
帮你快速获得一个 DocumentBuilder,方便 XML 解析。
|
public static int HASH_BUFF_SIZE
public static final boolean isAndroid
public static ComboException comboThrow(Throwable... es)
public static RuntimeException noImplement()
public static RuntimeException impossible()
public static RuntimeException makeThrow(String format, Object... args)
format
- 格式args
- 参数public static <T extends Throwable> T makeThrow(Class<T> classOfT, String format, Object... args)
classOfT
- 异常类型, 需要有一个字符串为参数的构造函数format
- 格式args
- 参数public static RuntimeException wrapThrow(Throwable e, String fmt, Object... args)
e
- 抛出对象fmt
- 格式args
- 参数public static RuntimeException wrapThrow(Throwable e)
如果是 InvocationTargetException,那么将其剥离,只包裹其 TargetException
e
- 抛出对象public static <T extends Throwable> T wrapThrow(Throwable e, Class<T> wrapper)
e
- 抛出对象wrapper
- 包裹类型public static boolean equals(Object a0, Object a1)
a0
- 比较对象1a1
- 比较对象2public static <T> boolean contains(T[] array, T ele)
array
- 数组ele
- 对象public static String readAll(Reader reader)
reader
- 文本输入流public static void writeAll(Writer writer, String str)
writer
- 文本输出流str
- 字符串public static InputStream ins(CharSequence cs)
cs
- 文本public static Reader inr(CharSequence cs)
cs
- 文本public static Writer opw(StringBuilder sb)
sb
- StringBuilder 对象public static StringOutputStream ops(StringBuilder sb)
sb
- StringBuilder 对象public static <T> T[] array(T... eles)
String[] strs = Lang.array("A", "B", "A"); => ["A","B","A"]
eles
- 可变参数public static <T> T[] arrayUniq(T... eles)
String[] strs = Lang.arrayUniq("A","B","A"); => ["A","B"] String[] strs = Lang.arrayUniq(); => null返回的顺序会遵循输入的顺序
eles
- 可变参数public static boolean isEmpty(Object obj)
obj
- 任意对象public static <T> boolean isEmptyArray(T[] ary)
ary
- 数组public static <T> ArrayList<T> list(T... eles)
List<Pet> pets = Lang.list(pet1, pet2, pet3);注,这里的 List,是 ArrayList 的实例
eles
- 可变参数public static <T> Set<T> set(T... eles)
eles
- 可变参数public static <T> T[] merge(T[]... arys)
arys
- 数组对象public static <T> T[] arrayFirst(T e, T[] eles)
e
- 对象eles
- 数组public static <T> T[] arrayLast(T[] eles, T e)
e
- 对象eles
- 数组public static <T> StringBuilder concatBy(String fmt, T[] objs)
所有的元素都被格式化字符串包裹。 这个格式话字符串只能有一个占位符, %s, %d 等,均可,请视你的数组内容而定
fmt
- 格式objs
- 数组public static <T> StringBuilder concatBy(String ptn, Object c, T[] objs)
所有的元素都被格式化字符串包裹。 这个格式话字符串只能有一个占位符, %s, %d 等,均可,请视你的数组内容而定
每个元素之间,都会用一个给定的字符分隔
ptn
- 格式c
- 分隔符objs
- 数组public static <T> StringBuilder concat(Object c, T[] objs)
每个元素之间,都会用一个给定的字符分隔
c
- 分隔符objs
- 数组public static <T> T[] without(T[] objs, T val)
objs
- 数组val
- 值,可以是 null,如果是对象,则会用 equals 来比较public static StringBuilder concat(Object c, long[] vals)
每个元素之间,都会用一个给定的字符分隔
c
- 分隔符vals
- 数组public static StringBuilder concat(Object c, int[] vals)
每个元素之间,都会用一个给定的字符分隔
c
- 分隔符vals
- 数组public static <T> StringBuilder concat(int offset, int len, Object c, T[] objs)
每个元素之间,都会用一个给定的字符分隔
offset
- 开始元素的下标len
- 元素数量c
- 分隔符objs
- 数组public static <T> StringBuilder concat(T[] objs)
objs
- 数组public static <T> StringBuilder concat(int offset, int len, T[] array)
offset
- 开始元素的下标len
- 元素数量array
- 数组public static <T> StringBuilder concat(Object c, Collection<T> coll)
每个元素之间,都会用一个给定的字符分隔
c
- 分隔符coll
- 集合public static <T> StringBuilder concat(Object c, Iterator<T> it)
每个元素之间,都会用一个给定的字符分隔
c
- 分隔符it
- 集合public static <C extends Collection<T>,T> C fill(C coll, T[]... objss)
C
- 集合类型T
- 数组元素类型coll
- 集合objss
- 数组 (数目可变)public static <T extends Map<Object,Object>> T collection2map(Class<T> mapClass, Collection<?> coll, String keyFieldName)
mapClass
- Map 的类型coll
- 集合对象keyFieldName
- 采用集合中元素的哪个一个字段为键。public static <E> List<E> collection2list(Collection<E> col)
col
- 集合对象public static <E> List<E> collection2list(Collection<?> col, Class<E> eleType)
col
- 集合对象eleType
- 列表类型public static <E> E[] collection2array(Collection<E> coll)
coll
- 集合对象public static <E> E[] collection2array(Collection<?> col, Class<E> eleType)
col
- 集合对象eleType
- 数组元素类型public static <T extends Map<Object,Object>> T array2map(Class<T> mapClass, Object array, String keyFieldName)
mapClass
- Map 的类型array
- 数组keyFieldName
- 采用集合中元素的哪个一个字段为键。public static <T> List<T> array2list(T[] array)
array
- 原始数组Castors
public static <T,E> List<E> array2list(Object array, Class<E> eleType)
array
- 原始数组eleType
- 新列表的元素类型Castors
public static Object array2array(Object array, Class<?> eleType) throws FailToCastObjectException
array
- 原始数组eleType
- 新数组的元素类型FailToCastObjectException
Castors
public static <T> Object[] array2ObjectArray(T[] args, Class<?>[] pts) throws FailToCastObjectException
args
- 原始数组pts
- 新数组的元素类型FailToCastObjectException
Castors
public static <T> T map2Object(Map<?,?> src, Class<T> toType) throws FailToCastObjectException
src
- Map 对象toType
- JAVA 对象类型FailToCastObjectException
public static NutMap map(String str)
str
- 参照 JSON 标准的字符串,但是可以没有前后的大括号public static void convertMapKey(Object obj, MapKeyConvertor mkc, boolean recur)
obj
- 要转换的 Map 或者 集合或者数组mkc
- 键值修改的回调recur
- 遇到 Map 是否递归MapKeyConvertor
public static NutMap mapf(String fmt, Object... args)
fmt
- 格式化字符串args
- 字符串参数public static Context context()
public static Context context(Map<String,Object> map)
map
- Map 对象public static Context contextf(String fmt, Object... args)
fmt
- JSON 字符串模板args
- 模板参数public static List<Object> list4(String str)
str
- 参照 JSON 标准的字符串,但是可以没有前后的中括号public static int length(Object obj)
obj
- public static <T> T first(Collection<T> coll)
coll
- 集合public static <T> void each(Object obj, Each<T> callback)
obj
- 对象callback
- 回调public static <T> void each(Object obj, boolean loopMap, Each<T> callback)
obj
- 对象loopMap
- 是否循环 Map,如果循环 Map 则主要看 callback 的 T,如果是 Map.Entry 则循环 Entry
否循环 value。如果本值为 false, 则将 Map 当作一个完整的对象来看待callback
- 回调public static <T> T get(T[] array, int index)
如果该下标越界,则返回 null
T
- array
- 数组,如果为 null 则直接返回 nullindex
- 下标,-1 表示倒数第一个, -2 表示倒数第二个,以此类推public static String getStackTrace(Throwable e)
e
- 抛出对象public static boolean parseBoolean(String s)
s
- 字符串public static DocumentBuilder xmls() throws ParserConfigurationException
ParserConfigurationException
public static void quiteSleep(long millisecond)
millisecond
- 休眠时间public static Number str2number(String s)
s
- 参数public static Map<String,Object> obj2map(Object obj)
obj
- POJO 对象public static NutMap obj2nutmap(Object obj)
obj
- POJO du对象public static <T extends Map<String,Object>> T obj2map(Object obj, Class<T> mapType)
T
- obj
- POJO 对象mapType
- Map 的类型public static <T> Enumeration<T> enumeration(Collection<T> col)
col
- 集合对象public static <T extends Collection<E>,E> T enum2collection(Enumeration<E> enums, T cols)
enums
- 枚举对象cols
- 集合对象public static byte[] toBytes(char[] cs)
cs
- 字符数组public static byte[] toBytes(int[] is)
is
- 整数数组public static boolean isWin()
public static Class<?> loadClass(String className) throws ClassNotFoundException
className
- 类的全称ClassNotFoundException
- 如果无法用当前线程的ClassLoader加载public static boolean isJDK6()
public static Object getPrimitiveDefaultValue(Class<?> pClass)
pClass
- 基本类型public static Type getFieldType(Mirror<?> me, String field) throws NoSuchFieldException
me
- field
- NoSuchFieldException
public static Type[] getMethodParamTypes(Mirror<?> me, Method method)
me
- method
- public static Type getFieldType(Mirror<?> me, Field field)
me
- field
- public static Type getGenericsType(Mirror<?> me, Type type)
me
- type
- public static Class<?> getTypeClass(Type type)
type
- 类型public static Type[] getGenericsTypes(Type type)
type
- 类型public static <T> Class<T> forName(String name, Class<T> type)
T
- name
- 类名type
- 这个类型的边界public static String md5(File f)
f
- 文件digest(String, File)
public static String md5(InputStream ins)
ins
- 输入流digest(String, InputStream)
public static String md5(CharSequence cs)
cs
- 字符串digest(String, CharSequence)
public static String sha1(File f)
f
- 文件digest(String, File)
public static String sha1(InputStream ins)
ins
- 输入流digest(String, InputStream)
public static String sha1(CharSequence cs)
cs
- 字符串digest(String, CharSequence)
public static String digest(String algorithm, File f)
algorithm
- 算法,比如 "SHA1" 或者 "MD5" 等f
- 文件public static String digest(String algorithm, InputStream ins)
algorithm
- 算法,比如 "SHA1" 或者 "MD5" 等ins
- 输入流public static String digest(String algorithm, CharSequence cs)
algorithm
- 算法,比如 "SHA1" 或者 "MD5" 等cs
- 字符串public static String digest(String algorithm, byte[] bytes, byte[] salt, int iterations)
algorithm
- 算法,比如 "SHA1" 或者 "MD5" 等bytes
- 字节数组salt
- 随机字节数组iterations
- 迭代次数public static <T> void reverse(T[] arrays)
arrays
- 指定的数组public static String fixedHexString(byte[] hashBytes)
public static void sleep(long ms)
ms
- 要睡眠的时间 mspublic static void wait(Object lock, long ms)
lock
- 锁对象ms
- 要等待的时间 mspublic static void notifyAll(Object lock)
lock
- 锁对象public static void runInAnThread(Runnable runnable)
public static Map<String,Object> filter(Map<String,Object> source, String prefix, String include, String exclude, Map<String,String> keyMap)
source
- 原始的map对象prefix
- 包含什么前缀,并移除前缀include
- 正则表达式 仅包含哪些key(如果有前缀要求,则已经移除了前缀)exclude
- 正则表达式 排除哪些key(如果有前缀要求,则已经移除了前缀)keyMap
- 映射map, 原始key--目标key (如果有前缀要求,则已经移除了前缀)public static String getIP(javax.servlet.http.HttpServletRequest request)
request
- 请求的req对象public static String runRootPath()
public static <T> T copyProperties(Object origin, T target)
public static <T> T copyProperties(Object origin, T target, String active, String lock, boolean ignoreNull, boolean ignoreStatic)
public static StringBuilder execOutput(String cmd, Charset charset) throws IOException
IOException
public static StringBuilder execOutput(String[] cmd, Charset charset) throws IOException
IOException
public static Class<?> loadClassQuite(String className) throws ClassNotFoundException
Copyright © 2016. All rights reserved.