LDAPConnection.LDAP_VERSION是一个static final的常量(不是变量)你只能直接书写获得。因为System.out.println( "The default LDAP protocol version used is "+ld.B );会在编译成class的时候就直接变成System.out.println( "The default LDAP protocol version used is "+ "some version info");
这个过程不是在运行期做的,所以你不能动态的获得这个final的常量。
只有说LDAPConnection提供了例如String value = LDAPConnection.get(String key)这样的方法的时候你才可以使用。

解决方案 »

  1.   

    谢谢灯泡,但是我的问题不在final,而在于变量名的动态替换。
    也就是说使用ld.B(或其它写法),其表示的意义是ld.LDAP_VERSION,也就是说把ld.B中的B内容替换出来。
    也可以是我自己定义的一个对象,如:lc为我自己定义的实例化的对象,其有一个属性名为name,另一变量为C,内容为name。如何使用类似lc.C来代替lc.name?String C="name";
    LC lc= new LC();
    System.out.println(lc.name);   //这一句是正确的
    System.out.println(lc.C);      //如何使这一句语义正确,跟上一句效果一样?
    如果想一下编译型语言的运行机制,或许这一种操作是不可以的,请大侠告知是否确定不能实现?
      

  2.   

    不知道明白了你的意思没有。
    如果一个类其域(属性)是public非const都可以如此:
    lc.C = lc.name;
      

  3.   

    你们几个是不是以前写javascript或者是php写多了,都写疯了。不管学习多少语言,当你学习一门语言的时候,就应该抛弃你自认为的一些特性,真正的从语言本身着手了。象javascript中eval功能在java中现在我还没有看到。
      

  4.   

    不是我写疯了
    我告诉大家,这是可以实现的
    刚才一个网友告诉我的类似的方法(思路不一样,原思路是通不过的)int version = ld.getClass().getField(B).getInt(ld);
      

  5.   

    只能通过反射机制实现,就像
    int version = ld.getClass().getField(B).getInt(ld);
    这样。既然你已经知道了那么现在你的问题在哪里?BTW:
    PHP?哪是什么垃圾?