在Java中,可以通过以下几种方法获取类名:
getClass()
方法和getName()
方法:public class MyClass {
public static void main(String[] args) {
MyClass obj = new MyClass();
String className = obj.getClass().getName();
System.out.println("类名: " + className);
}
}
getSimpleName()
方法:public class MyClass {
public static void main(String[] args) {
MyClass obj = new MyClass();
String simpleClassName = obj.getClass().getSimpleName();
System.out.println("简单类名: " + simpleClassName);
}
}
getCanonicalName()
方法:public class MyClass {
public static void main(String[] args) {
MyClass obj = new MyClass();
String canonicalClassName = obj.getClass().getCanonicalName();
System.out.println("规范类名: " + canonicalClassName);
}
}
getTypeName()
方法(仅适用于Java 8及更高版本):import java.lang.reflect.ParameterizedType;
public class MyClass<T> {
public static void main(String[] args) {
MyClass<String> obj = new MyClass<>();
String typeName = ((ParameterizedType) obj.getClass().getGenericSuperclass()).getActualTypeArguments()[0].getTypeName();
System.out.println("类型名称: " + typeName);
}
}
这些方法将返回不同的类名表示形式。getName()
方法返回完全限定类名,包括包名;getSimpleName()
方法返回不包含包名的类名;getCanonicalName()
方法与getName()
方法类似,但对于数组类型会返回更友好的表示形式;getTypeName()
方法返回泛型类型的名称。