类方法学习二:getClasses()、getDeclaredClasses()

本文详细解析了Java中使用getDeclaredClasses()和getClasses()方法获取类内部定义的公共、私有、保护的内部类和接口的方法,通过实例代码演示了如何在不同层级的类中调用这些方法并输出结果。
摘要由CSDN通过智能技术生成

转自:http://blog.csdn.net/csdn1234/article/details/2563806

 

一.定义

Class[] getDeclaredClasses()

返回类中定义的公共、私有、保护的内部类和接口。但不包括继承的内部类和接口。

Class[] getClasses()

返回类定义的公共的内部类和接口,以及从父类、父接口那里继承来的内部类和接口

二.例子

1.GrandFather.java

  1. public class GrandFather {
  2. public class ClassG_Pub {
  3. int x;
  4. }
  5. class ClassG_Pro {
  6. int x;
  7. }
  8. private class ClassG_Pri {
  9. int x;
  10. }
  11. public interface InterfG_Pub {
  12. public String getName();
  13. }
  14. interface InterfG_Pro {
  15. public String getName();
  16. }
  17. private interface InterfG_Pri {
  18. public String getName();
  19. }
  20. }
public class GrandFather {

  public class ClassG_Pub {

    int x;

  }

  

  class ClassG_Pro {

    int x;

  }

  

  private class ClassG_Pri {

    int x;

  }

  public interface InterfG_Pub {

    public String getName();

  }

  

  interface InterfG_Pro {

    public String getName();

  }

  

  private interface InterfG_Pri {

    public String getName();

  }

  

}

2.Father.java

  1. public class Father extends GrandFather{
  2. public class ClassF_Pub {
  3. int x;
  4. }
  5. class ClassF_Pro {
  6. int x;
  7. }
  8. private class ClassF_Pri {
  9. int x;
  10. }
  11. public interface InterfF_Pub {
  12. public String getName();
  13. }
  14. interface InterfF_Pro {
  15. public String getName();
  16. }
  17. private interface InterfF_Pri {
  18. public String getName();
  19. }
  20. }
public class Father extends GrandFather{

  public class ClassF_Pub {

    int x;

  }

  

  class ClassF_Pro {

    int x;

  }

  

  private class ClassF_Pri {

    int x;

  }

  public interface InterfF_Pub {

    public String getName();

  }

  

  interface InterfF_Pro {

    public String getName();

  }

  

  private interface InterfF_Pri {

    public String getName();

  }

  

}

3.Son.java

  1. public class Son extends Father{
  2. public class ClassS_Pub {
  3. int x;
  4. }
  5. class ClassS_Pro {
  6. int x;
  7. }
  8. private class ClassS_Pri {
  9. int x;
  10. }
  11. public interface InterfS_Pub {
  12. public String getName();
  13. }
  14. interface InterfS_Pro {
  15. public String getName();
  16. }
  17. private interface InterfS_Pri {
  18. public String getName();
  19. }
  20. public static void main(String args[]) throws Exception{
  21. System.out.println("getClasses:");
  22. for (Class c:Son.class.getClasses()) {
  23. System.out.println("class name:" + c.getName());
  24. }
  25. System.out.println("getDeclaredClasses:");
  26. for (Class c:Son.class.getDeclaredClasses()) {
  27. System.out.println("class name:" + c.getName());
  28. }
  29. }
  30. }
public class Son extends Father{

  public class ClassS_Pub {

    int x;

  }

  

  class ClassS_Pro {

    int x;

  }

  

  private class ClassS_Pri {

    int x;

  }

  public interface InterfS_Pub {

    public String getName();

  }

  

  interface InterfS_Pro {

    public String getName();

  }

  

  private interface InterfS_Pri {

    public String getName();

  }

  

  public static void main(String args[]) throws Exception{

    System.out.println("getClasses:");

    for (Class c:Son.class.getClasses()) {

      System.out.println("class name:" + c.getName());

    }

    

    System.out.println("getDeclaredClasses:");

    for (Class c:Son.class.getDeclaredClasses()) {

      System.out.println("class name:" + c.getName());

    }

  }



}

4.java Son的输出结果是:

  1. getClasses:
  2. class name:Son$InterfS_Pub
  3. class name:Son$ClassS_Pub
  4. class name:Father$InterfF_Pub
  5. class name:Father$ClassF_Pub
  6. class name:GrandFather$InterfG_Pub
  7. class name:GrandFather$ClassG_Pub
  8. getDeclaredClasses:
  9. class name:Son$InterfS_Pri
  10. class name:Son$InterfS_Pro
  11. class name:Son$InterfS_Pub
  12. class name:Son$ClassS_Pri
  13. class name:Son$ClassS_Pro
  14. class name:Son$ClassS_Pub  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值