name aName = Class.forName("name");
aName.method();

解决方案 »

  1.   

    getMethod("name")得到一个Method,然后用这个Method的invoke()执行。
      

  2.   

    不过,好的一点的用法是先定义一个接口,然后把Class.forName()创建的类造型为该接口,调用接口的方法。
      

  3.   

    呵呵,你结贴太快了!其实这些问题都可以在那个帖子一起解决
    http://www.csdn.net/Expert/TopicView1.asp?id=721965
    我做了写补充,希望能对你有所帮助。
      

  4.   

    Class.forName(“name”);后得到的是一个Class,还需用
    Class.newInstance()来得到一个object,在转化成具体的实例,
    比如:
    Calculator cal = (Calculator) ( Class.forName("cal")).newInstance();
    cal.add(1,2);
    明白了吧?
      

  5.   

    明白是有那么一点点我还有个问题
    如果在name中创建的类造型为该接口,调用接口的方法
    是name aname;
     aname.methodname();
    还是能直接 methodname();
      

  6.   

    如果通过jdbc-odbc bridge 访问数据库
    Class.forName("sun.jdbc.odbc.JdbcOdbcdriver");
    可否用import sun.jdbc.odbc.JdbcOdbcdriver;
      

  7.   

    是name aname;
     aname.methodname();
    :)
      

  8.   

    我在使用jdbc-odbc时
    import java.sql.*;
    使用其中的接口
    请问在jdbcodbcdriver 里是不是已经将java.sql.*
    中定义的jdbc的通用接口实现了
    但我使用时也没有用到
    jdbcodbcdriver.interfacename();
      

  9.   

    是啊,但是java.sql.*不是为sun.jdbc.odbc.JdbcOdbcdriver一个类服务的啊!它开发时要考虑到各种厂商的不同驱动,如果你确信你的应用对数据库不会做任何的变更(比如从JDBC:ODBC方式方式转到SQLServe自己的驱动),你当然可以直接使用,可以省去反射和造型的开销:)
      

  10.   

    如果依照jdbc的通用接口编制一个数据库的驱动程序
    import java.sql.*;
    Class.forName("mydriver");

    使用通用接口时是直接interfacename();
    还是mydriver.interfacename();?
    如果自己编制将怎样将类造型为接口?
      

  11.   

    interface A{}
    class B implements A{}
    B b;
    Object t = Class.forName( b.getClass().getName() ).newInstance();
    // 造型
    A a = ( A ) t;