基本上,我浏览JFrame中的所有组件,检查其是否具有方法setTitle(String arg0),如果有,则将其标题设置为“ foo”。但是,为了设置标题,我需要将其转换为合适的对象。

    public void updateTitle(Container root){

        for (Component c : root.getComponents()){

            String s = "";
            for (Method m : c.getClass().getDeclaredMethods()){

                s += m.getName();
            }

            if (s.contains("setTitle")){

                c.setTitle("foo"); //Here is where I need the casting
            }

            if (c instanceof Container){

                updateTitle((Container) c);
            }
        }
    }


问题是,我不知道这是什么课。有什么办法可以将其转换为自身,还是我应该尝试做其他事情?

最佳答案

拥有Method时,可以使用invoke()进行调用:

 for (Method m : c.getClass().getDeclaredMethods()){
     if( "setTitle".equals( m.getName() ) {
         m.invoke( c, "foo" ); // == c.setTitle("foo"); but without the casts
     }
 }

10-07 18:56