巧合?另一个帖子有问取的对象中所有属性的操作,顺便贴一下://创建一个日历对象
java.util.Calendar clndr = java.util.Calendar.getInstance();
// 获得日历对象的类
Class cls = clndr.getClass();
//显示类名
System.out.println(cls.getName());//获得类中所有public属性
java.lang.reflect.Field[] flds = cls.getFields();if ( flds != null )
{
    // 遍历属性数组,显示属性名和值
    for ( int i = 0; i < flds.length; i++ )
    {
        System.out.println(flds[i].getName() + " - " + flds[i].get(clndr));
    }
}

解决方案 »

  1.   

    显示方法名:java.util.Calendar clndr = java.util.Calendar.getInstance();
    Class cls = clndr.getClass();// 获得所有public方法
    java.lang.reflect.Method[] mtds = cls.getMethods();if ( mtds != null )
    {
        for ( int i = 0; i < mtds.length; i++ )
        {
            System.out.print(mtds[i].getName() + "(");
            
            // 获得方法形式参数
            Class[] pts = mtds[i].getParameterTypes();
            
            if ( pts != null && pts.length > 0 )
            {
                String pt = "";
                
                for ( int j = 0; j < pts.length; j++ )
                {
                    pt += pts[j].getName() + ", ";
                }
                
                pt = pt.substring(0, pt.lastIndexOf(","));
                
                System.out.print(pt);
            }
            
            System.out.print(") ");
            
            // 获得方法异常
            Class[] ets = mtds[i].getExceptionTypes();
            
            if ( ets != null && ets.length > 0 )
            {
                String et = "throws ";
                
                for ( int j = 0; j < ets.length; j++ )
                {
                    et += ets[j].getName() + ", ";
                }
                
                et = et.substring(0, et.lastIndexOf(","));                           
                
                System.out.print(et);
            }
            
            System.out.println();
        }
    }
      

  2.   

    用反射方式调用方法:以Calendar类的方法
    int get(int field)
    为例:java.util.Calendar clndr = java.util.Calendar.getInstance();
    Class cls = clndr.getClass();java.lang.reflect.Method mtd_get = cls.getMethod("get", new Class[]{int.class});System.out.println(mtd_get.invoke(clndr, new Object[]{new Integer(Calendar.YEAR)} ));