java - 如何创建一个接受符号的构造函数,例如:*、+、()等
问题描述
我正在尝试通过构造函数传递某些类型的字符,例如标题中的字符,然后为其分配一个枚举。
我有一个具有三个值的枚举类:NUMBER、STRING 和 SYMBOL。
我有三个构造函数:
(float x) {}
(String str){}
(Symbol value) {}
传递浮点数时,我将变量“类型”分配给 Type.STRING。字符串也是如此,但使用 Type.STRING。
如何对各种符号(例如标题中的符号)执行此操作?当我创建一个 Entry 实例并尝试传递一个加号 (+) 时,我收到消息“标记“+”上的语法错误,删除此标记”。
public class Entry{
private Type type;
public Entry(Type value) {
this.type = Type.SYMBOL;
}
}
解决方案
在 java+
中是一个操作符。它只能用作表达式的一部分,不能单独使用。
但是,您可以传递包含+
如下内容的字符串:"+"
或使用表示不同运算符的枚举:
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) {
}
推荐阅读
- alteryx - 如何比较两个数据集并标记违反规则
- android - 在服务中运行后台计时器并在之后触发代码的最佳实践?
- c# - Xamarin 重置动画或翻译后替换视图位置X 动画结束
- git - `git clone` 如何处理目标目录中的任何现有文件和子目录?
- jenkins - 如何在jenkins中修改xml文件中的xml元素
- python - Python tkinter 覆盖默认 ctrl-h 绑定
- ios - 添加时间到日期选择器日期和时间会导致相同的日期和时间。迅速
- asp.net-mvc - DataContext 初始化给出错误
- xml - xdt 通过子节点属性进行转换
- postgresql - 在一个查询中计算具有不同条件的行