gpt4 book ai didi

java - 检查类在其构造函数中是否有基于字符串的变量?

转载 作者:行者123 更新时间:2023-11-29 08:38:51 24 4
gpt4 key购买 nike

假设我有一个名为 Person 的类,它的构造函数有 nameagehairColor 等变量等等。如果我有一个接收字符串的函数,该字符串应该与类的一个变量相匹配,我该如何检查该类是否真的有该变量以及如何修改它?例如:

public class Person {
public String name;
public int age;
public String hairColor;

public Person() {
name = "Bryce";
age = 21;
hairColor = "brown";
}

public void changeHairColor(String variable, String color) {
if (/*this class contains the variable passed as an argument to this method*/) {
// Person[variable] = color
}
}
}

我主要是一名 Python 开发人员,所以 changeHairColor 方法中有一些伪 Python 代码。我希望能够以类似的方式编辑变量,您可以使用 Python 在字典中编辑变量:

person = {
"name": "Bryce",
"age": 21,
"hairColor": "brown"
}

def changeHairColor(variable, color):
person[variable] = color

如果可能的话。

最佳答案

在 Java 中做到这一点的唯一方法是使用 Java Reflection API :

public class Test {
public String name;
public int age;
public String hairColor;

public void setProperty(String property, Object value) {
try {
Field declaredField = this.getClass().getDeclaredField(property);
switch (declaredField.getAnnotatedType().getType().getTypeName()) {
case "java.lang.String":
declaredField.set(this, value);
break;
// handle other types
}
} catch (NoSuchFieldException e) {
// handle exception
} catch (IllegalAccessException e) {
// handle exception
}
}

public static void main(String[] args) {
Test test = new Test();
test.setProperty("name", "Bob");
System.out.println(test.name);
}
}

关于java - 检查类在其构造函数中是否有基于字符串的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41784541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com