如何在java中键入值来自字符串

时间:2013-06-28 00:51:19

标签: java php

我想从字符串设置的值中设置java中的键 抱歉,我无法解释这一点,所以我在PHP和这里写了这个 就是一个例子。

class Test() {

    public setField($key, $value) {
        $this->{$key} = $value;
    }
}

$class = new Test()
$class->setField("hello", "hello world");
echo $class->hello;

3 个答案:

答案 0 :(得分:2)

地图界面提供了所请求的行为:

import java.util.HashMap;

public class StackOverflow {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("hello", "hello world");
        System.out.println(map.get("hello"));
    }
}

但是您通常希望使用变量作为键,然后您需要一种方法来设置和检索每个变量。

public class Test {
    private String hello;

    public void setHello(String hello) {
        this.hello = hello; 
    }

    public String getHello() {
        return hello;
    }
}
public class StackOverflow {
  public static void main(String[] args) {
    Test test = new Test();
    test.setHello("Hello world");
    System.out.println(test.getHello());
  }
}

或者你可以将变量公开:

   public class Test {
        public String hello;
    }
    public class StackOverflow {
      public static void main(String[] args) {
        Test test = new Test();
        test.hello = "Hello world";
        System.out.println(test.hello);
      }
    }

答案 1 :(得分:1)

Java没有PHP之类的内置动态变量。实现相同功能的最简单方法是使用Map

public class Test {
    private Map<String, String> map = new HashMap<String, String>();

    public void setField(String key, String value) {
        map.put(key, value);
    }

    public String getField(String key) {
        return map.get(key);
    }
}

Test test = new Test();
test.setField("hello", "hello world");
System.out.println(test.getField("hello"));

答案 2 :(得分:0)

您必须在Java中手动执行此操作。有点像:

class Test(){
    private HashMap<Object, Object> inner_objects;

    public void setField(Object key, Object value) {
        this.inner_objects.put(key, value);
    }

    public Object getField(Object key){
        return this.inner_objects.get(key);
    }
}

当然,这个例子可以通过多种方式进行改进,但它只是为了给你一般的想法。

但由于没有运算符重载,因此您无法将->视为getField,因此您需要每次都调用getField(key)