当前位置: 技术问答>java相关
加载之后?
来源: 互联网 发布时间:2015-05-29
本文导语: 使用Class.forName(“name”);后 是否可以直接使用name中定义的方法 还是要创建一个实例再调用 。 new name().method;? 如果name中的类中包含已知接口 又该怎样调用接口方法? | 不客气! | name...
使用Class.forName(“name”);后
是否可以直接使用name中定义的方法
还是要创建一个实例再调用 。
new name().method;?
如果name中的类中包含已知接口
又该怎样调用接口方法?
是否可以直接使用name中定义的方法
还是要创建一个实例再调用 。
new name().method;?
如果name中的类中包含已知接口
又该怎样调用接口方法?
|
不客气!
|
name aName = Class.forName("name");
aName.method();
aName.method();
|
getMethod("name")得到一个Method,然后用这个Method的invoke()执行。
|
不过,好的一点的用法是先定义一个接口,然后把Class.forName()创建的类造型为该接口,调用接口的方法。
|
呵呵,你结贴太快了!其实这些问题都可以在那个帖子一起解决
http://www.csdn.net/Expert/TopicView1.asp?id=721965
我做了写补充,希望能对你有所帮助。
http://www.csdn.net/Expert/TopicView1.asp?id=721965
我做了写补充,希望能对你有所帮助。
|
Class.forName(“name”);后得到的是一个Class,还需用
Class.newInstance()来得到一个object,在转化成具体的实例,
比如:
Calculator cal = (Calculator) ( Class.forName("cal")).newInstance();
cal.add(1,2);
明白了吧?
Class.newInstance()来得到一个object,在转化成具体的实例,
比如:
Calculator cal = (Calculator) ( Class.forName("cal")).newInstance();
cal.add(1,2);
明白了吧?
|
是name aname;
aname.methodname();
:)
aname.methodname();
:)
|
可以,但那样你的程序就太有针对性而无法扩展了
|
是啊,但是java.sql.*不是为sun.jdbc.odbc.JdbcOdbcdriver一个类服务的啊!它开发时要考虑到各种厂商的不同驱动,如果你确信你的应用对数据库不会做任何的变更(比如从JDBC:ODBC方式方式转到SQLServe自己的驱动),你当然可以直接使用,可以省去反射和造型的开销:)
|
interface A{}
class B implements A{}
B b;
Object t = Class.forName( b.getClass().getName() ).newInstance();
// 造型
A a = ( A ) t;
class B implements A{}
B b;
Object t = Class.forName( b.getClass().getName() ).newInstance();
// 造型
A a = ( A ) t;
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。