Class对象相信大家都是知道的,不然java就白学了,那小伙伴们知道class对象中有哪些方法吗?它们又该如何使用呢?下面一起来看看吧。
class方法
方法实例:
package com.cry; import java.lang.reflect.Field; interface I1 {} interface I2 {} class Cell { public int mCellPublic; } class Animal extends Cell { private int mAnimalPrivate; protected int mAnimalProtected; int mAnimalDefault; public int mAnimalPublic; private static int sAnimalPrivate; protected static int sAnimalProtected; static int sAnimalDefault; public static int sAnimalPublic; } class Dog extends Animal implements I1, I2 { private int mDogPrivate; public int mDogPublic; protected int mDogProtected; private int mDogDefault; private static int sDogPrivate; protected static int sDogProtected; static int sDogDefault; public static int sDogPublic; } public class Test { public static void main(String[] args) throws IllegalAccessException, InstantiationException { Class < Dog > dog = Dog.class; //类名打印 System.out.println(dog.getName()); //com.cry.Dog System.out.println(dog.getSimpleName()); //Dog System.out.println(dog.getCanonicalName()); //com.cry.Dog //接口 System.out.println(dog.isInterface()); //false for (Class iI: dog.getInterfaces()) { System.out.println(iI); } /* interface com.cry.I1 interface com.cry.I2 */ //父类 System.out.println(dog.getSuperclass()); //class com.cry.Animal //创建对象 Dog d = dog.newInstance(); //字段 for (Field f: dog.getFields()) { System.out.println(f.getName()); } /* mDogPublic sDogPublic mAnimalPublic sAnimalPublic mCellPublic //父类的父类的公共字段也打印出来了 */ System.out.println("---------"); for (Field f: dog.getDeclaredFields()) { System.out.println(f.getName()); } /** 只有自己类声明的字段 mDogPrivate mDogPublic mDogProtected mDogDefault sDogPrivate sDogProtected sDogDefault sDogPublic */ } }
getSimpleName:只获取类名
getName:类的全限定名,jvm中Class的表示,可以用于动态加载Class对象,如Class.forName。
getCanonicalName:返回更容易理解的表示,主要用于输出(toString)或log打印,大多数情况下和getName一样,但是在内部类、数组等类型的表示形式就不同了。
例:
package com.cry; public class Test { private class inner {} public static void main(String[] args) throws ClassNotFoundException { //普通类 System.out.println(Test.class.getSimpleName()); //Test System.out.println(Test.class.getName()); //com.cry.Test System.out.println(Test.class.getCanonicalName()); //com.cry.Test //内部类 System.out.println(inner.class.getSimpleName()); //inner System.out.println(inner.class.getName()); //com.cry.Test$inner System.out.println(inner.class.getCanonicalName()); //com.cry.Test.inner //数组 System.out.println(args.getClass() .getSimpleName()); //String[] System.out.println(args.getClass() .getName()); //[Ljava.lang.String; System.out.println(args.getClass() .getCanonicalName()); //java.lang.String[] //我们不能用getCanonicalName去加载类对象,必须用getName //Class.forName(inner.class.getCanonicalName()); 报错 Class.forName(inner.class.getName()); } }
以上就是关于class对象中方法的全部内容,小伙伴们如果还需要了解更多java常见问题及答案就请记得关注我们网站啊。