******关于java中调用函数的问题********

zhu_jiajun 2002-04-27 01:25:40
在java中调用函数,函数名是个变量

如:要调用test();
或test1();是不定的,根据temp的值来调用函数,temp的值从数据库取出


请问大家知道怎么实现吗?
...全文
74 点赞 收藏 18
写回复
18 条回复
wangwenyou 2002年04月27日
invoke()
同意dylanwolf(),用内部子类来代替你的方法也是一个好办法
其实你使用无数个if else也未尝不可,但不那样做是为了增强你的代码的可维护性。
回复 点赞
zhu_jiajun 2002年04月27日
类Constructor 有newinstance()这个方法来执行

但是类method中 没有什么方法来执行我调用的函数阿?
回复 点赞
dylanwolf 2002年04月27日
他是让你通过类来实现, 没个类对应一个函数。

根据不同的输入创建相应的“函数”类,然后调用具体的函数。
回复 点赞
eyeieye 2002年04月27日
指出一个错误,Java中应无“函数”一词。

又抓到别人小辫子了,哈哈
回复 点赞
xhh 2002年04月27日
同意wangwenyou(王文友)~
Java里面的反射API很灵活的说
回复 点赞
wangwenyou 2002年04月27日
那个跟你的应用无关
你看看innerClass.getMethods()吧
我所能提示你的就这些了,希望你不要太依赖于别人帮你完成,这对你自己的发展有利。
回复 点赞
Layout 2002年04月27日
使用reflect可以判断函数名以及classname从而判断
调用的函数是那个
回复 点赞
zhu_jiajun 2002年04月27日
up

有没有高手们提点建议
回复 点赞
zhu_jiajun 2002年04月27日
方法,函数一级,谁能够提出一个解决方案!
回复 点赞
RedGuest 2002年04月27日
好象是不行的

只能用witch或者是if了
回复 点赞
zhu_jiajun 2002年04月27日
首先不能用switch 和 if else

数据库里会存放很多这样的映射信息

java.lang.reflect 到底怎么样用??

王文友的方法中FunctionCode 是什么意思呢??

谢谢大家继续讨论
回复 点赞
yuhan 2002年04月27日
从库里取出的数据你把它变成INT型的放在switch(i)里面
回复 点赞
yuhan 2002年04月27日
用switch()
case:1
test1();
break;
case2:
test2();
break;
}
回复 点赞
wangwenyou 2002年04月27日
我给你一个类级的例子,方法一级的你自己参照完成,很容易的
FunctionCode fc = FunctionCode.getInstance();
String className = this.getClass().getName() + "$" +
fc.get( FunctionID ).functionName;
Class innerClass = Class.forName( className );
Object[] initArgs = new Object[]{ this };
Class[] paramTypes = new Class[]{ this.getClass() };
Constructor innerConstr = innerClass.getConstructor( paramTypes );
AbstractAction action = ( AbstractAction ) innerConstr.newInstance(
initArgs );
回复 点赞
Luke_cn 2002年04月27日
呵呵,用变通的方法来实现,不要想的太复杂了。
回复 点赞
dylanwolf 2002年04月27日
呵呵, java里没有函数指针的说, 否则就方便多了。
回复 点赞
wangwenyou 2002年04月27日
使用反射
java.lang.reflect;
回复 点赞
zfluo 2002年04月27日
if( temp==xxx )
test();
else if( temp==xxx)
test1();
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告