我正在寻找任何方法来检查类的给定属性的类型是自定义对象类型(例如,Person)还是Java对象(例如,String,Long,原始类型)类型.如果使用了instanceof,则会检查所有Java类型.任何人都可以建议一种方法来检查,如果有的话存在.
解决方法:
Java非常“基于自身”.许多SDK可以被视为“自定义”或“内置”,具体取决于您正在查看它的方式.
例如,Exception内置于Java中,但也是用Java编写的.您可以自己编写类似的代码,但是根据您所说的我猜您会认为它是“Java对象”.
类似地,ArrayList也是用Java编写的,但因为它是一个实用类,我猜你会认为它是“自定义的”,虽然我不确定,因为它仍然包含在SDK中.
在不确切知道你在寻找什么的情况下,我能根据你所说的(String,Long等)猜测的最接近的分组是java.lang包.在words of the SDK documentation本身中,java.lang包:
Provides classes that are fundamental to the design of the Java programming language.
您可以检查对象的类的包名是否在java.lang中:
static class A {
}
public static void main (String[] args) {
String test1 = "";
A test2 = new A();
int test3 = 3;
System.out.println(isJavaLang(test1));
System.out.println(isJavaLang(test2));
System.out.println(isJavaLang(test3));
}
public static boolean isJavaLang(Object check) {
return check.getClass().getName().startsWith("java.lang");
}
标签:java,types,reflection,class
来源: https://codeday.me/bug/20190713/1454557.html