gpt4 book ai didi

java - 有没有办法将 String 对象分配为自定义类实例?

转载 作者:行者123 更新时间:2023-11-30 02:20:24 25 4
gpt4 key购买 nike

尝试从 String 类扩展,但它是最终的,因此寻找一种方法以便我可以将 String 对象分配为我的自定义类实例?

示例:

public class MyClass {
public CustomString cString;
}

MyClass myClass = new MyClass();
Field field = myClass.getField("cString");
field.set(myClass, "TestValue");

最佳答案

如果您必须通过反射来完成此操作,那么使用方法而不是字段怎么样。具体来说,尝试使用像这样的 setter 约定:

class MyClass {
private CustomString customString = new CustomString();

public CustomString getCustomString() {
return customString;
}

public String getCustomStringValue() {
return customString.getValue();
}

public void setCustomString(String customString) {
this.customString.setValue(customString);
}
}

class CustomString {
private String value;

public void setValue(String value) {
this.value = value;
}

public String getValue() {
return value;
}
}

public static void main(String[] args) throws InvocationTargetException, IllegalAccessException {
String fieldName = "customstring";
MyClass myClass = new MyClass();
Method[] methods = myClass.getClass().getMethods();
for(Method method : methods) {
String name = method.getName();
if (name.equalsIgnoreCase("set" + fieldName) {
method.invoke(myClass, "Hello");
}
}
System.out.println(myClass.getCustomStringValue());
}

这样您仍然可以使用字段名称,但允许通过任意有趣的方法设置字段。

关于java - 有没有办法将 String 对象分配为自定义类实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47027440/

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