从变量调用方法

时间:2019-03-03 17:30:54

标签: java

我有一个名为“ line”的变量,该变量来自缓冲读取器,它将是txt日志中的一行。

有时我会使用正则表达式,这是方法“ matches”的作用,正则表达式较慢。其他时候,我将需要使用“包含”。

如下所示:

if (line.matches(problemIdExample.getFirstline())) {
      // Do stuff;
}

if (line.contains(problemIdExample.getFirstline())) {
      // Do stuff;
}

我想做的是在应用中更早地配置“匹配项”或“包含项”,因此我可以执行以下操作

if (line.varibleWithMatchesOrContain(problemIdExample.getFirstline())) {
      // Do stuff;
}

很明显,如果我尝试以上方法,则无法正常工作。

2 个答案:

答案 0 :(得分:0)

傍晚!谢谢您的帮助。我也许可以将方法(选择)附加到想要的变量名上,但是似乎我需要使用Reflection。如果仍然使用反射,则会出现性能问题。所以我把这个想法归类了!

所以我已经给出了答案,从文本文件缓冲时,基本上我将不得不选择“包含”或“匹配”(正则表达式)。

我的选择仅是2个选项,所以我做了一个小改动:

if(variable.equals("matches")) {
    line.matches();
} else {
    line.contains();
}

我选择了“ else”而不是“ else if”,因为它的处理量稍少,没有第二个条件需要检查。

结果很好。实际上,所有搜索都必须使用“ matches”(正则表达式)。现在,我进行了拆分,这意味着有些用户可以从“包含”中受益:

我扫描了相同的日志集10次:

平均无开关:2分23秒 平均切换时间:52秒

答案 1 :(得分:-1)

此代码检查您的变量是否等于“ matches”或“ contains”,并执行相应的方法。

if(variabile.equals("matches")) {
    line.matches();
} else if(variabile.equals("contains")) {
    line.contains();
}