gpt4 book ai didi

java - 将类类型存储为变量以识别 java 列表中下一个预期的对象类型

转载 作者:行者123 更新时间:2023-11-30 05:22:34 25 4
gpt4 key购买 nike

我正在开发一个项目,在该项目中我获取字符串列表并需要将它们解析为不同类型的对象,例如我有 CommandFloatArgumentIntegerArgument 作为 3 个不同的类。对于给定的输入(例如“fetch 5 3.45”),我需要查看它是否正确,然后获取参数。为此,我决定创建一种库,其中所有命令都可以存储在哈希列表中

baseCommands = new HashMap<String, Command>();

在命令类中,我存储每个命令所需的基本信息,并且我还想包含下一个预期的 token ,因为现在我很确定每个命令只会有 1 种类型的 token 可以遵循任何命令/参数。因此,我在命令类以及存储此信息的参数类中创建了一个 Class 字段:

public class Command {
public int identifier;
public Class next;
public boolean isLast;

public Command(int identifier, Class next, boolean isLast) {
//add the stuff neccesary to make general commands. (except string name).
this.identifier = identifier;
this.next = next;
this.isLast = isLast;
}
}

通常,据我了解,如果您会使用抽象类来存储不同的类类型(如果它们都相似)。例如,抽象类 Animal 由 DogCat 等扩展。但是在这种情况下,我有 2 个独立的东西:命令和参数。我觉得有一个空的抽象类可能不是这里最优雅的解决方案,但我可能是错的。

据我了解,Class 字段用于存储类类型。这将是理想的,以便稍后我可以通过简单地执行以下操作来查看输入中的给定标记是否后面的下一个标记与预期的标记匹配:

token.type instanceof lastToken.next

但是,一旦我尝试将信息放入 HashMap 中,如下所示:

baseCommands.put("execute", new Command(1, Command, false));

我收到以下简单错误:

Command cannot be resolved to a variable

现在我知道它试图做的是传递一个不存在的变量而不是像我试图做的那样传递类类型。如何将类 Command 作为类型传递?我可以使用上述方法检查输入中的下一个标记是否正确吗?这是执行此操作的正确方法还是我应该为命令和参数创建另一个抽象类?

感谢您的投入。

最佳答案

你必须引用Command.class:

baseCommands.put("execute", new Command(1, Command.class, false));

关于java - 将类类型存储为变量以识别 java 列表中下一个预期的对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59311857/

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