如何创建接受符号的构造函数,例如:*、+、() 等
How to create a constructor that accepts symbols, such as: *, +, (), etc
我正在尝试通过构造函数传递某些类型的字符,例如标题中的字符,然后为其分配一个枚举。
我有一个枚举 class,它具有三个值:NUMBER、STRING 和 SYMBOL。
我有三个构造函数:
(float x) {}
(String str){}
(Symbol value) {}
当传递一个浮点数时,我将一个变量'type'赋值给Type.STRING。字符串也是如此,但是 Type.STRING.
如何为各种符号(例如标题中的符号)执行此操作?当我创建一个 Entry 实例并尝试传递一个加号 (+) 时,我收到消息 'Syntax error on token "+", delete this token'.
public class Entry{
private Type type;
public Entry(Type value) {
this.type = Type.SYMBOL;
}
}
在 java +
中是一个 operator。它只能用作表达式的一部分,不能单独使用。
然而,您可以像这样传递包含 +
的字符串:"+"
或使用代表不同运算符的枚举:
enum Operator {
PLUS, MINUS;
}
那么你的构造函数可以接受这样一个枚举:
public Entry(Operator op) {
}
另一种选择是创建一个 "addition" 函数,可以将两个元素相加,并将该函数传递给构造函数。然而,这有点棘手,需要知道你要添加什么类型的东西:
BiFunction<MyObject, MyObject, MyObject> addition = (a,b) -> {
//implement a+b here;
//return result;
}
那么构造函数可能是这样的:
public Entry(BiFunction<MyObject, MyObject, MyObject> func) {
}
我正在尝试通过构造函数传递某些类型的字符,例如标题中的字符,然后为其分配一个枚举。
我有一个枚举 class,它具有三个值:NUMBER、STRING 和 SYMBOL。
我有三个构造函数:
(float x) {}
(String str){}
(Symbol value) {}
当传递一个浮点数时,我将一个变量'type'赋值给Type.STRING。字符串也是如此,但是 Type.STRING.
如何为各种符号(例如标题中的符号)执行此操作?当我创建一个 Entry 实例并尝试传递一个加号 (+) 时,我收到消息 'Syntax error on token "+", delete this token'.
public class Entry{
private Type type;
public Entry(Type value) {
this.type = Type.SYMBOL;
}
}
在 java +
中是一个 operator。它只能用作表达式的一部分,不能单独使用。
然而,您可以像这样传递包含 +
的字符串:"+"
或使用代表不同运算符的枚举:
enum Operator {
PLUS, MINUS;
}
那么你的构造函数可以接受这样一个枚举:
public Entry(Operator op) {
}
另一种选择是创建一个 "addition" 函数,可以将两个元素相加,并将该函数传递给构造函数。然而,这有点棘手,需要知道你要添加什么类型的东西:
BiFunction<MyObject, MyObject, MyObject> addition = (a,b) -> {
//implement a+b here;
//return result;
}
那么构造函数可能是这样的:
public Entry(BiFunction<MyObject, MyObject, MyObject> func) {
}