Step By Step(Java 反射篇) (二)

2014-11-24 03:19:38 · 作者: · 浏览: 1
.getModifiers())) {

23 System.out.println("Field '" + f.getName() + "' is static.");

24 }

25 }

26 //获取类的构造函数,getConstructors仅仅返回该类的public构造函数。

27 //如果希望获得全部的构造函数,调用getDeclaredConstructors

28 Constructor< >[] constructors = c.getConstructors();

29 for (Constructor< > ctor : constructors) {

30 if (Modifier.isProtected(ctor.getModifiers())) {

31 System.out.println("Constructor '" + ctor.getName() + "' is protected.");

32 } else if (Modifier.isPrivate(ctor.getModifiers())) {

33 System.out.println("Constructor '" + ctor.getName() + "' is private.");

34 } else if (Modifier.isPublic(ctor.getModifiers())) {

35 System.out.println("Constructor '" + ctor.getName() + "' is public.");

36 }

37 }

38 //获取类中声明的域方法,但是不包含超类中的方法。

39 //这其中getMethods()方法将仅仅返回当前类的public域方法

40 Method methods[] = c.getDeclaredMethods();

41 for (Method m : methods) {

42 if (Modifier.isProtected(m.getModifiers())) {

43 System.out.println("Method '" + m.getName() + "' is protected.");

44 } else if (Modifier.isPrivate(m.getModifiers())) {

45 System.out.println("Method '" + m.getName() + "' is private.");

46 } else if (Modifier.isPublic(m.getModifiers())) {

47 System.out.println("Method '" + m.getName() + "' is public.");

48 } else if (Modifier.isStatic(m.getModifiers())) {

49 System.out.println("Method '" + m.getName() + "' is static.");

50 } else if (Modifier.isNative(m.getModifiers())) {

51 System.out.println("Method '" + m.getName() + "' is native.");

52 } else if (Modifier.isAbstract(m.getModifiers())) {

53 System.out.println("Method '" + m.getName() + "' is abstract.");

54 } else if (Modifier.isFinal(m.getModifiers())) {

55 System.out.println("Method '" + m.getName() + "' is final.");

56 }

57 }

58 System.out.println("}");

59 } catch (ClassNotFoundException e) {

60 System.err.println("Error: Class " + className + " not found!");

61 } catch (Exception e) {

62 System.err.println(e);

63 }

64 }

65 }

5) 获取超类的名称:

1 public static void main(String[] args) {

2 Class< > subclass = LinkedList.class;

3 //获取超类的Class对象。

4 Class< > superclass = subclass.getSuperclass();

5 while (superclass != null) {

6 String className = superclass.getName();

7 System.out.println(className);

8 subclass = superclass;

9 superclass = subclass.getSuperclass();

10 }

11 }

12 /* 输出结果如下:

13 java.util.AbstractSequentialList

14 java.util.AbstractLis