Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中创建值来自字符串的键_Java_Php - Fatal编程技术网

如何在java中创建值来自字符串的键

如何在java中创建值来自字符串的键,java,php,Java,Php,我想从字符串中设置的值在java中设置一个键 很抱歉,我无法向good解释这一点,所以我在这里用php编写了这篇文章 这就是一个例子 class Test() { public setField($key, $value) { $this->{$key} = $value; } } $class = new Test() $class->setField("hello", "hello world"); echo $class->hello;

我想从字符串中设置的值在java中设置一个键 很抱歉,我无法向good解释这一点,所以我在这里用php编写了这篇文章 这就是一个例子

class Test() {

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

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

您必须使用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);
    }
}
类测试(){
私有HashMap内部对象;
public void设置字段(对象键、对象值){
this.internal_objects.put(key,value);
}
公共对象getField(对象键){
返回this.internal_objects.get(key);
}
}
当然,这个例子可以从几个方面进行改进,但这只是给你一个大概的想法


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

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);
    }
}

映射接口提供请求的行为:

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 {
        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);
      }
    }

这在PHP中可能有效,但在Java中无法实现。也许如果你使用反射?这是'臭'虽然,你不应该这样做。如果你想使用OOP来学习设计指南。谢谢我用hashmaps做的,这些会使代码变慢吗?是的,它比变量慢。如果你能用变量解决问题,你应该使用变量。
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);
      }
    }