如何在java中创建值来自字符串的键
我想从字符串中设置的值在java中设置一个键 很抱歉,我无法向good解释这一点,所以我在这里用php编写了这篇文章 这就是一个例子如何在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;
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);
}
}