怎样得到一个对象的对象名 比如String str = "abc";我需要得到str的对象名 就是"str" 一般情况是得到str的值 要怎样操作 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果这个str是方法内部的局部变量是很可能得不到的,因为编译时这个名字不一定会带上。如果编译时带上了源代码信息,你可以自己分析Class文件中变量名这个table。一般没有必要得到这个名字吧,非常麻烦又没有太大实际用处 Java 反射机制运用实例\\ TIP:只知道类名,要运用反射机制动态调用已知类名的方法类结构:-------form(package):CityQueryForm.java-------test(package):Test.java CityQueryForm.java:package form;import java.util.Hashtable;public class CityQueryForm { private String name = null; public void setName(Hashtable ht) { this.name = (String) ht.get("name"); } public String getName() { return name; }} Test.java:package test;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Hashtable;public class Test { private void getForm(Hashtable ht, String formName) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException { //Class c = Class.forName(formName); Object o = Class.forName(formName).newInstance(); // 指定类名的类对象 Class partypes[] = new Class[1]; partypes[0] = Hashtable.class; //setName方法需要的参数 Method ms = o.getClass().getMethod("setName", partypes); //得到指定方法名和参数的方法对象 Method mg = o.getClass().getMethod("getName", null); ms.invoke(o, ht); //方法调用 String mg.invoke(o, null); System.out.println(name); } public static void main(String[] args) throws ClassNotFoundException, SecurityException, IllegalArgumentException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { String formName = "form.CityQueryForm"; Hashtable ht = new Hashtable(); ht.put("name", "wuhan"); Test t = new Test(); t.getForm(ht,formName); }}测试结果:wuhan ---------------------以上是网上copy下的。我想说的是:可以用Java的反射机制实现!!动手查查JAVAAPI吧相关资料:http://tech.it168.com/j/2007-10-21/200710211609265.shtml 还有资料http://hi.baidu.com/%BF%C6%D1%A7%CA%C0%BD%E7/blog/item/19418501244c6ad3267fb54f.html 应该无法得到,变量在编译后会编程二进制。如果是类名可以通过getClass().getName()获取 对象是没有对象名的。只有哪些变量指向该对象,而且对象可以不被指向,也可以被多个变量指向,而且java中是不可以得到指向对象的所有对象名的。因为变量可以在多个方法中指向,变量名有可能重合,有可能被回收,有可能还没销毁内存String a="abc";String b=a;String c=a;这样"abc" Java switch判断的值是变动的怎么办 关于j2ee学习的问题 怎么复制一个对象? 请问能将applet部署为一个servlet吗?? 学 JAVA 要与 UNIX/Linux 结合起来学习吗? ***********100分,回答的好就全给他^_^********* 问个验证码最后的输出问题,2个都可以但是为什么要设置下流长度?这个我记得以前看的讲过,但是忘了,又不知道该查那点的资料,请指导下!!! JBuild中怎么做安装程序? 如何在VJ++中找到java.nio包? 安装了了JB6,还能再安装JDK1。4吗?? el 表达式不能用 正则表达式解析xml?
\\ TIP:只知道类名,要运用反射机制动态调用已知类名的方法类结构:-------form(package):CityQueryForm.java-------test(package):Test.java CityQueryForm.java:package form;import java.util.Hashtable;public class CityQueryForm {
private String name = null;
public void setName(Hashtable ht)
{
this.name = (String) ht.get("name");
}
public String getName() {
return name;
}} Test.java:package test;import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Hashtable;public class Test { private void getForm(Hashtable ht, String formName) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException {
//Class c = Class.forName(formName);
Object o = Class.forName(formName).newInstance(); // 指定类名的类对象
Class partypes[] = new Class[1];
partypes[0] = Hashtable.class; //setName方法需要的参数
Method ms = o.getClass().getMethod("setName", partypes); //得到指定方法名和参数的方法对象
Method mg = o.getClass().getMethod("getName", null);
ms.invoke(o, ht); //方法调用
String mg.invoke(o, null);
System.out.println(name);
} public static void main(String[] args) throws ClassNotFoundException, SecurityException, IllegalArgumentException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
String formName = "form.CityQueryForm";
Hashtable ht = new Hashtable();
ht.put("name", "wuhan");
Test t = new Test();
t.getForm(ht,formName); }}测试结果:wuhan ---------------------
以上是网上copy下的。我想说的是:可以用Java的反射机制实现!!
动手查查JAVAAPI吧相关资料:
http://tech.it168.com/j/2007-10-21/200710211609265.shtml
http://hi.baidu.com/%BF%C6%D1%A7%CA%C0%BD%E7/blog/item/19418501244c6ad3267fb54f.html
String a="abc";String b=a;String c=a;这样"abc"