CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

加载之后?

楼主middlware(阿阳)2002-05-14 20:04:58 在 Java / J2SE / 基础类 提问

使用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

相关问题

  • 求救!JTable加载的单元格在点击之后消失...
  • 加载图象
  • 加载图象
  • 加载页面
  • 加载错误!!!
  • 加载动画
  • 如何加载dll?(隐式加载)
  • 动态加载DLL!!!!!!!!!!!!!!!!!!!
  • midas.dll加载错误!
  • 动态加载dll

关键词

  • 接口
  • 驱动
  • 数据库
  • jdbc
  • sun
  • sql
  • aname
  • forname
  • jdbcodbcdriver
  • 调用

得分解答快速导航

  • 帖主:middlware
  • chenyuan_tongji
  • wangwenyou
  • wangwenyou
  • wangwenyou
  • Joeblackyang
  • wangwenyou
  • wangwenyou
  • wangwenyou
  • wangwenyou
  • wangwenyou

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo