比如
String str = "abc";
我需要得到str的对象名 就是"str" 一般情况是得到str的值 要怎样操作

解决方案 »

  1.   

    如果这个str是方法内部的局部变量是很可能得不到的,因为编译时这个名字不一定会带上。如果编译时带上了源代码信息,你可以自己分析Class文件中变量名这个table。一般没有必要得到这个名字吧,非常麻烦又没有太大实际用处
      

  2.   

    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
      

  3.   

    还有资料
    http://hi.baidu.com/%BF%C6%D1%A7%CA%C0%BD%E7/blog/item/19418501244c6ad3267fb54f.html
      

  4.   

    应该无法得到,变量在编译后会编程二进制。如果是类名可以通过getClass().getName()获取
      

  5.   

    对象是没有对象名的。只有哪些变量指向该对象,而且对象可以不被指向,也可以被多个变量指向,而且java中是不可以得到指向对象的所有对象名的。因为变量可以在多个方法中指向,变量名有可能重合,有可能被回收,有可能还没销毁内存
    String a="abc";String b=a;String c=a;这样"abc"