有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何创建接受符号的构造函数,如:*、+、()等

我试图通过构造函数传递某些类型的字符,比如标题中的字符,然后为其分配枚举

我有一个enum类,它有三个值:NUMBER、STRING和SYMBOL

我有三个构造器:

(float x) {}
(String str){}
(Symbol value) {}

当一个float被传递时,我将一个变量“type”分配给type。一串字符串也是如此,但类型不同。绳子

如何对各种符号(如标题中的符号)执行此操作?当我创建一个Entry实例并尝试传递(比如)一个加号(+)时,我会得到一条消息,“Syntax error on token”+,delete this token”

public class Entry{
    private Type type;

    public Entry(Type value) {
        this.type = Type.SYMBOL;
    }
}

共 (1) 个答案

  1. # 1 楼答案

    在java中+是一个operator。它只能用作表达式的一部分,不能单独使用

    但是,您可以像这样传递包含+的字符串:"+",或者使用代表不同运算符的枚举:

    enum Operator {
        PLUS, MINUS;
    }
    

    然后您的构造函数可以接受这样的枚举:

    public Entry(Operator op) {
    }
    

    另一个选项是创建一个“加法”函数,可以将两个元素相加,并将该函数传递给构造函数。然而,这有点棘手,需要知道你要添加什么类型的东西:

    BiFunction<MyObject, MyObject, MyObject> addition =  (a,b) -> {
        //implement a+b here;
        //return result;
    }
    

    那么构造函数可以是这样的:

    public Entry(BiFunction<MyObject, MyObject, MyObject> func) {
    }