add methods

This commit is contained in:
Looly 2020-03-16 20:58:47 +08:00
parent e14a1a5ad8
commit 2801373c9e
4 changed files with 73 additions and 34 deletions

View File

@ -8,7 +8,7 @@
### 新特性 ### 新特性
* 【setting】 Setting中增加addSetting和autoLoad重载pr#104@Gitee * 【setting】 Setting中增加addSetting和autoLoad重载pr#104@Gitee
* 【core 】 增加copyProperties根据Class创建对象并进行属性拷贝pr#105@Gitee * 【core 】 增加copyProperties根据Class创建对象并进行属性拷贝pr#105@Gitee
* 【core 】 增加copyProperties根据Class创建对象并进行属性拷贝pr#105@Gitee * 【core 】 添加获取class当前文件夹名称方法pr#106@Gitee
### Bug修复 ### Bug修复

View File

@ -266,10 +266,10 @@ public class CharUtil {
* 是否空白符<br> * 是否空白符<br>
* 空白符包括空格制表符全角空格和不间断空格<br> * 空白符包括空格制表符全角空格和不间断空格<br>
* *
* @see Character#isWhitespace(int)
* @see Character#isSpaceChar(int)
* @param c 字符 * @param c 字符
* @return 是否空白符 * @return 是否空白符
* @see Character#isWhitespace(int)
* @see Character#isSpaceChar(int)
* @since 4.0.10 * @since 4.0.10
*/ */
public static boolean isBlankChar(int c) { public static boolean isBlankChar(int c) {
@ -285,7 +285,7 @@ public class CharUtil {
*/ */
public static boolean isEmoji(char c) { public static boolean isEmoji(char c) {
//noinspection ConstantConditions //noinspection ConstantConditions
return false == ((c == 0x0) || // return false == ((c == 0x0) || //
(c == 0x9) || // (c == 0x9) || //
(c == 0xA) || // (c == 0xA) || //
(c == 0xD) || // (c == 0xD) || //
@ -309,8 +309,8 @@ public class CharUtil {
/** /**
* 比较两个字符是否相同 * 比较两个字符是否相同
* *
* @param c1 字符1 * @param c1 字符1
* @param c2 字符2 * @param c2 字符2
* @param ignoreCase 是否忽略大小写 * @param ignoreCase 是否忽略大小写
* @return 是否相同 * @return 是否相同
* @since 4.0.3 * @since 4.0.3
@ -324,11 +324,12 @@ public class CharUtil {
/** /**
* 获取字符类型 * 获取字符类型
*
* @param c 字符 * @param c 字符
* @return 字符类型 * @return 字符类型
* @since 5.2.3 * @since 5.2.3
*/ */
public static int getType(int c){ public static int getType(int c) {
return Character.getType(c); return Character.getType(c);
} }
} }

View File

@ -1054,4 +1054,35 @@ public class ClassUtil {
|| objectPackageName.startsWith("javax.") // || objectPackageName.startsWith("javax.") //
|| clazz.getClassLoader() == null; || clazz.getClassLoader() == null;
} }
/**
* 获取class类路径URL, 不管是否在jar包中都会返回文件夹的路径<br>
* class在jar包中返回jar所在文件夹,class不在jar中返回文件夹目录<br>
* jdk中的类不能使用此方法
*
* @return URL
* @since 5.2.4
*/
public static URL getLocation(Class<?> clazz) {
if (null == clazz) {
return null;
}
return clazz.getProtectionDomain().getCodeSource().getLocation();
}
/**
* 获取class类路径, 不管是否在jar包中都会返回文件夹的路径<br>
* class在jar包中返回jar所在文件夹,class不在jar中返回文件夹目录<br>
* jdk中的类不能使用此方法
*
* @return class路径
* @since 5.2.4
*/
public static String getLocationPath(Class<?> clazz) {
final URL location = getLocation(clazz);
if (null == location) {
return null;
}
return location.getPath();
}
} }

View File

@ -1,11 +1,12 @@
package cn.hutool.core.util; package cn.hutool.core.util;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Objects;
/** /**
* {@link ClassUtil} 单元测试 * {@link ClassUtil} 单元测试
* *
@ -35,7 +36,7 @@ public class ClassUtilTest {
} }
} }
@SuppressWarnings("unused") @SuppressWarnings({"unused", "InnerClassMayBeStatic"})
class TestSubClass extends TestClass { class TestSubClass extends TestClass {
private String subField; private String subField;
@ -102,4 +103,10 @@ public class ClassUtilTest {
String result = ClassUtil.getShortClassName(className); String result = ClassUtil.getShortClassName(className);
Assert.assertEquals("c.h.c.u.StrUtil", result); Assert.assertEquals("c.h.c.u.StrUtil", result);
} }
@Test
public void getLocationPathTest(){
final String classDir = ClassUtil.getLocationPath(ClassUtilTest.class);
Assert.assertTrue(Objects.requireNonNull(classDir).endsWith("/hutool-core/target/test-classes/"));
}
} }