Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 227|回复: 0

[Java反射学习]获取类的方法列表

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-31 23:58:27 | 显示全部楼层 |阅读模式
    java命令行工具中有一个javap,可以帮我们输出一个类的方法列表,有时候很有用啊!尤其是象我这样 对java API记忆模糊的人,如图是查Date类的输出

    C:java>javap java.util.Date
    Compiled from Date.java
    public class java.util.Date extends java.lang.Object implements java.io.Serializ able, java.lang.Cloneable, java.lang.Comparable {
      

      
       public java.util.Date();
         public java.util.Date(long);
         public java.util.Date(int,int,int);
         public java.util.Date(int,int,int,int,int);
         public java.util.Date(int,int,int,int,int,int);
         public java.util.Date(java.lang.String);
         public java.lang.Object clone();
         public static long UTC(int, int, int, int, int, int);
         public static long parse(java.lang.String);
         public int getYear();
         public void setYear(int);
         public int getMonth();
         public void setMonth(int);
         public int getDate();
         public void setDate(int);
         public int getDay();
         public int getHours();
         public void setHours(int);  
      
       
       
       

       
      
      
       
         public int getMinutes();
         public void setMinutes(int);
         public int getSeconds();
         public void setSeconds(int);
         public long getTime();
         public void setTime(long);
         public boolean before(java.util.Date);
         public boolean after(java.util.Date);
         public boolean equals(java.lang.Object);
         public int compareTo(java.util.Date);
         public int compareTo(java.lang.Object);
         public int hashCode();
         public java.lang.String toString();
         public java.lang.String toLocaleString();
         public java.lang.String toGMTString();
         public int getTimezoneOffset();
         static {};
    }
    下面的程序有相似的功能,它利用了java反射API
    import java.io.*;
    import java.util.*;
    import java.lang.reflect.*;

    public class MyJavaP {
             public static void main(String[] argv) {
                    MyJavaP pp = new MyJavaP();
                    if (argv.length == 0) {
                    System.err.println("Usage: javap className [...]");
                         System.exit(1);
                    } else for (int i=0; i<argv.length; i++)
                        pp.doClass(argv);//分别处理从命令行输入的每一个类名
                    }

             protected void doClass(String className) {
                    try {
                        Class c = Class.forName(className);//动态载入类
                        //输出类的修饰符
                        System.out.println(Modifier.toString(c.getModifiers()) + " " + c + " {");
                        int i, mods;
                        Field fields[] = c.getDeclaredFields();//获得类声明的所有字段  
                        for (i = 0; i < fields.length; i++) {
                            if(!Modifier.isPrivate(fields.getModifiers())&& ! Modifier.isProtectedfieldsi].getModifiers()))
                            System.out.println("        " + fields);//输出公共的字段
                        }
                        Method methods[] = c.getDeclaredMethods();
                        for (i = 0; i < methods.length; i++) {
                            if (!Modifier.isPrivate(methods.getModifiers())&&!Modifier.isProtected (methodsi].getModifiers()))
                            System.out.println("        " + methods);//输出公共的方法
                        }
                   } catch (ClassNotFoundException e) {
                            System.err.println("Error: Class " +className + " not found!");
                   } catch (Exception e) {
                            System.err.println(e);
                   } finally {
                            System.out.println("}");
                   }
       }
    }

      
      
       
       

         
       

         
       
      
      

    源码下载:http://file.javaxxz.com/2014/10/31/235827625.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-18 23:00 , Processed in 0.388979 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表