装个jbuilder吧,你想知道哪个类里有那些方法和属性只要类名.就会弹出方法和属性了。如一个String对象s,你只要输入s.就ok了
还有就是看API文档了

解决方案 »

  1.   

    ????偶看jdk源码,或JB的源码支持
    -----------------------------------
    又怎样在不知道的情况下调用呢?
    ------------------------------------
    ???????????
      

  2.   

    只要能得到本身类里有哪些方法和哪些属性(包含private)当然是通过代码自动实现
      

  3.   

    面向的3个特色里面就有封装这个概念,呵呵,在你不知道的类中想得到他的属性,和method恐怕不太easy
    好像记得可以有个method是得到属性的,方法那个就没有
    (希望没误导)
      

  4.   

    比如我想从数据库中select一行数据时,
    通过自动获得类属性和方法来设置valueobject呀。
      

  5.   

    我查了一下,在struts中有个commons-beanutils.jar包,好象可以解决这个问题。
    不知道有哪个高手可以讲一下怎么用?
      

  6.   

    import java.lang.reflect.*;class Test{
    private int pri = 10;
    protected int pro = 20;
    public int pub = 30;

    private void pri_print(){
    System.out.println("private");

    protected void pro_print(){
    System.out.println("protected");

    public void pub_print(){
    System.out.println("public");

    }
    public class Demo{
    public static void main(String[] args) 
    throws IllegalAccessException,
    IllegalArgumentException, InvocationTargetException{
         Class c = Test.class;  
             
         Field[] fs = c.getDeclaredFields();
         //设为可访问的
         Field.setAccessible(fs, true);
         for(int i = 0; i < fs.length; i++){
         System.out.println(fs[i].getName());    
         }
         //得到private int pri的值
         System.out.println(fs[0].getInt(new Test()));
        
         Method[] ms = c.getDeclaredMethods();
         Method.setAccessible(ms, true);
         for(int i = 0; i < ms.length; i++){
         System.out.println(ms[i].getName());    
         }
         //得到定义这个方法的类名
         System.out.println(ms[0].getDeclaringClass().getName());    
         //调用private方法
         ms[0].invoke(new Test(), null);
        }
    }
      

  7.   

    to  fog628(发粪涂墙) 
      很好。可以得到属性、方法名。但是ms[0].invoke(new Test(), null);调用时报错:java.lang.reflect.InvocationTargetException
      

  8.   

    pri
    pro
    pub
    10
    pri_print
    pro_print
    pub_print
    Test
    private
    Press any key to continue...我机上没有报错啊
      

  9.   

    http://blog.csdn.net/treeroot/archive/2004/12/29/232826.aspx
      

  10.   

    http://blog.csdn.net/treeroot/archive/2004/12/29/232786.aspx上面两个例子较多的利用了反射
      

  11.   

    to 发粪涂墙和众高手
    帮我看看下面这段有什么错误!!!:StntInfo nt = new StntInfo();
    ResultSet rs =null;
    Method m;
    ...
    ...
    rs = nt.getResult("asdfsd");
    try{
    Method m;
             //得到表字段的名称
    colnms = nt.getColumnNames(rs);
    colcount = colnms.size();
             rs.first();
    //如果有数据
    if (rs.next()){
    for (int i=1;i<colcount;i++){
                              //构回方法字符串,确实类中有该方法,这一点可以确保
    tmpCol = "set"+colnms.get(i).toString();
    out.print("<br>");
    try{
    value = rs.getObject(i);
    m = nt.getClass().getDeclaredMethod(tmpCol,null);
    //ms.invoke(nt, null);
    }catch(Exception e){}
                         }
    }
    else
    out.print(false);
      }
      catch(Exception e){}
      

  12.   

    1.方法名不对 set+ //第一个字母要大些 比如 set+"Name";
    2.获得方法没有制定参数,getDeclaredMethod(temcol,new Class[]{String.class});
      这里参数是String类型
    3.触发时要给参数 ms.invoke(nt,new Object[]{"this is the new name"});
      

  13.   

    我的方法是这样定义的
    setSTNM()
    setSTCD()
    而我getColumnNames(rs)返回的也都是STNM,STCD等。
      

  14.   

    to treeroot(天才--天天被人踩,人才--人人都想踩) :
    1、回答如上。
    2、改成m = StntInfo.class.getDeclaredMethod(tmpCol,new Class[]{String.class});好的不报错。
    3、m.invoke(nt,new Object[]{rs.getObject(i)});好的不报错。现在我想取得数据,如下:
    tmpPr = "get"+colnms.get(i).toString().toUpperCase();
    t = StntInfo.class.getDeclaredMethod(tmpPr,new Class[]{String.class});
    out.print(t.invoke(nt, new Class[]));//报错,在这里怎么处理
      

  15.   

    服了你了
    set方法才有参数呀,get方法哪里来的参数?
    没有参数可以传一个null或者new Object[0]
      

  16.   

    out.print(t.invoke(nt, new Class[]));//报错,在这里怎么处理
    //这是invoke的原形
    public Object invoke(Object obj, Object[] args)nt是包含你要调用的方法的类的一个实例,
    第二个参数(就也就是Object[]) 
    是那个方法名对应的参数列表
    class Test{
    protected void pro_print(int i, Integer in){}
    }
    invoke(new Test(),new Object[]{new Integer(1),new Integer(2)});
    这样调用啊