gpt4 book ai didi

java - 在Java中,我想调用名称为 'foo' 的对象的方法,但 'foo' 是一个字符串。我该如何解决这个问题?

转载 作者:行者123 更新时间:2023-12-01 05:14:21 25 4
gpt4 key购买 nike

我有一个名为“foo”的对象(Object foo = new Object())。我想在另一个方法中调用该对象,在该方法中我在签名中传递带有该对象名称的字符串。如何使用表示对象名称的字符串来调用该对象?

我收到找不到符号错误。

这是一些代码:

//from main method
Object foo = new Object();
Monitor monitor = new Monitor();
//end main method

class Monitor {
public Monitor() {
Manager manager = new Manager();
}


//IMPORTANT - info.objectName is user input, and for this example it is "foo"

public void processArgument(Instruction info) {
if (info.command == "read") int value = manager.read(info.objectName);
}
}

class Manager {
public int read(String obj) {
return obj.getRead();
}
}

class Object {
private int value;
public int getRead() {return value;}
}

我希望这是有道理的,我对此不太擅长,但我需要一些帮助。这是针对具有严格的反代码共享政策的类,因此我尝试使其尽可能抽象。

最佳答案

简短回答

Java 或 JVM 不支持此功能。

长答案为什么

给定MyCustomObject xxx = new MyCustomObject();

无法实际调用 xxx 上的任何方法这是对 MyCustomObject 类型实例的引用在Java中给出String s = "xxx"; 。因为无法在 JVM 中搜索名为 xxx 的引用。 。没有方法可以让您查找引用文献 xxx给定任意 String .

重复问题

Java Reflection: get instances of a given class found by entering its name?如果您无法通过引用名称找到它,则无法调用它的任何方法!

黑客解决方法

您可以将此引用存储在某种 Map<String, T> 中自己构建结构,然后传递该结构并自己搜索它,但这并不是 JVM 或语言本身内置的任何内容。强制执行这一点几乎是不可能的,它会引入一些static的紧密耦合。数据,以及许多其他糟糕的设计问题会在以后引起很多麻烦。

关于java - 在Java中,我想调用名称为 'foo' 的对象的方法,但 'foo' 是一个字符串。我该如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11515890/

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