如何通过反射机制,动态调用静态变量?

wzrlover 2005-03-03 04:39:17
如,
public static String getSQL(Object _object,String _action){
String bizAction=_object.getClass().getName();
String sqlName=bizAction.substring(bizAction.lastIndexOf(".")).toUpperCase().concat("_SQL");
return SQLUtil.sqlName;//这里想返回该静态变量值??

}

通过组装生成sqlName(即SQLUtil的静态变量名字符串),如何返回该值?
...全文
1027 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzrlover 2005-03-04
  • 打赏
  • 举报
回复
谢谢楼上2位!
说好不能打脸 2005-03-03
  • 打赏
  • 举报
回复
确实不是那么简单:用代理模式,在正常接口实现中加入反射机制:(不知道是不是与搂主的要求相吻合,但至少我想可以得出一点启发吧)

首先来看一个正常的接口,接口中的常量就是要在反射机制中调用的:
public interface Reflect1Interface {
public static String MYSTRING = new String("鹅eee!!");
public void nowget();
}

public class Temp12 implements Reflect1Interface{
public void nowget(){

}
}

以上的代码是人就会看,不所做解释了
一下加入代理:
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class Reflect1 implements InvocationHandler{
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable{
System.out.println(Reflect1Interface.MYSTRING);
return proxy;
}

public static void main(String[] src){
InvocationHandler myInvocationHandler = new Reflect1();
//这句话是关键
Class c = Proxy.getProxyClass(Reflect1Interface.class.getClassLoader(),new Class[]{Reflect1Interface.class});
try{
Reflect1Interface t = (Reflect1Interface)c.getConstructor(new Class[]{InvocationHandler.class}).newInstance(new Object[]{myInvocationHandler});
t.nowget();
}
catch(Exception e){
System.out.println(e.toString());
}
}
}

在这里我并不知道是谁实现了Reflect1Interface接口,但这不重要,proxy对象记录了其中的所有信息,
在Reflect1中我调用常量就可以了
bigc2000 2005-03-03
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3811/3811744.xml?temp=.4723932
wzrlover 2005-03-03
  • 打赏
  • 举报
回复
看来有点难度了
wzrlover 2005-03-03
  • 打赏
  • 举报
回复
up
cangwu_lee 2005-03-03
  • 打赏
  • 举报
回复
unknow

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧