加载之后?
使用Class.forName(“name”);后
是否可以直接使用name中定义的方法
还是要创建一个实例再调用 。
new name().method;?
如果name中的类中包含已知接口
又该怎样调用接口方法?
问题点数:100、回复次数:15Top
1 楼chenyuan_tongji(codeguru)回复于 2002-05-14 20:21:39 得分 5
name aName = Class.forName("name");
aName.method();Top
2 楼wangwenyou(王文友)回复于 2002-05-14 20:26:52 得分 5
getMethod("name")得到一个Method,然后用这个Method的invoke()执行。Top
3 楼wangwenyou(王文友)回复于 2002-05-14 20:29:10 得分 5
不过,好的一点的用法是先定义一个接口,然后把Class.forName()创建的类造型为该接口,调用接口的方法。Top
4 楼wangwenyou(王文友)回复于 2002-05-14 20:30:34 得分 5
呵呵,你结贴太快了!其实这些问题都可以在那个帖子一起解决
http://www.csdn.net/Expert/TopicView1.asp?id=721965
我做了写补充,希望能对你有所帮助。Top
5 楼Joeblackyang(暗夜精灵)回复于 2002-05-14 20:31:56 得分 5
Class.forName(“name”);后得到的是一个Class,还需用
Class.newInstance()来得到一个object,在转化成具体的实例,
比如:
Calculator cal = (Calculator) ( Class.forName("cal")).newInstance();
cal.add(1,2);
明白了吧?Top
6 楼middlware(阿阳)回复于 2002-05-14 20:54:08 得分 0
明白是有那么一点点
我还有个问题
如果在name中创建的类造型为该接口,调用接口的方法
是name aname;
aname.methodname();
还是能直接 methodname();Top
7 楼middlware(阿阳)回复于 2002-05-14 20:59:03 得分 0
如果通过jdbc-odbc bridge 访问数据库
Class.forName("sun.jdbc.odbc.JdbcOdbcdriver");
可否用import sun.jdbc.odbc.JdbcOdbcdriver;
Top
8 楼wangwenyou(王文友)回复于 2002-05-14 20:59:56 得分 5
是name aname;
aname.methodname();
:)Top
9 楼wangwenyou(王文友)回复于 2002-05-14 21:03:44 得分 5
可以,但那样你的程序就太有针对性而无法扩展了Top
10 楼middlware(阿阳)回复于 2002-05-14 21:09:35 得分 0
我在使用jdbc-odbc时
import java.sql.*;
使用其中的接口
请问在jdbcodbcdriver 里是不是已经将java.sql.*
中定义的jdbc的通用接口实现了
但我使用时也没有用到
jdbcodbcdriver.interfacename();
Top
11 楼wangwenyou(王文友)回复于 2002-05-14 21:15:50 得分 5
是啊,但是java.sql.*不是为sun.jdbc.odbc.JdbcOdbcdriver一个类服务的啊!它开发时要考虑到各种厂商的不同驱动,如果你确信你的应用对数据库不会做任何的变更(比如从JDBC:ODBC方式方式转到SQLServe自己的驱动),你当然可以直接使用,可以省去反射和造型的开销:)Top
12 楼middlware(阿阳)回复于 2002-05-14 21:22:16 得分 0
如果依照jdbc的通用接口编制一个数据库的驱动程序
import java.sql.*;
Class.forName("mydriver");
后
使用通用接口时是直接interfacename();
还是mydriver.interfacename();?
如果自己编制将怎样将类造型为接口?Top
13 楼wangwenyou(王文友)回复于 2002-05-14 21:32:29 得分 5
interface A{}
class B implements A{}
B b;
Object t = Class.forName( b.getClass().getName() ).newInstance();
// 造型
A a = ( A ) t;Top
14 楼middlware(阿阳)回复于 2002-05-14 21:34:57 得分 0
谢谢Top
15 楼wangwenyou(王文友)回复于 2002-05-14 21:39:48 得分 55
不客气!Top




