将方法.equalsOr()添加到String类

时间:2018-11-29 18:59:52

标签: java string

我只是从Java开始。

我想知道是否存在一种添加方法的方法,以便任何String都可以调用该方法,类似于我们现在可以string1.equals(string2)使用string1.equalsOr(string2, string3, string4, string5)的方式。

我知道我可以创建自己的静态方法,但是想知道是否可以将其用于任何字符串。

6 个答案:

答案 0 :(得分:5)

string1.equalsOr(string2, string3, string4, string5)

可以很容易地写为(Java 9 +)

Set.of(string2, string3, string4, string5).contains(string1)

(Java 9 +)

List.of(string2, string3, string4, string5).contains(string1)

(Java 8 +)

Stream.of(string2, string3, string4, string5).anyMatch(string1::equals)

(任何Java)

Arrays.asList(string2, string3, string4, string5).contains(string1)

答案 1 :(得分:4)

如果要检查string1与一组字符串string2, string3, string4, string5是否相等。最好使用任何集合(即SetList)。例如,如果您使用

 Arrays.asList(string2, string3, string4, string5).contains(string1)

它将为您带来预期的结果。

答案 2 :(得分:2)

在Java中,您无法以所需的方式扩展String类。

这是其他jvm语言能够执行的操作,但是在某种程度上是接受String和参数的静态方法。

但是,除了静态方法外,您可以做的是创建一个在构造过程中接受String的类,然后将所需的方法添加到该类中。 这样,您就可以在Java基本代码之上创建具有自己的逻辑的自己的类型。

答案 3 :(得分:1)

不。您不能以这种方式修改String类。

使它可用于任何字符串将有效地创建该静态方法,因为只有在 you 调用它时,您才能使用此构造。

答案 4 :(得分:1)

您不能使用Java,您的愿望是改型“ String”类,这几乎是不可能的(您实际上可以编辑String的源代码并重新编译Java jar,但我不确定会起作用的。)

另一方面,您绝对可以使用Groovy。 Groovy可以直接使用大多数Java代码,但是增加了额外的功能,例如将新方法改造为现有类的功能。 Groovy大量使用此功能来实现“ new File(“ file”)。getText()”之类的功能,以字符串形式获取文件的整个文本。

通常这很好,因为在groovy和Java之间来回切换非常容易-一旦您将构建配置为使用groovy,通常就可以将.java文件重命名为.groovy并从groovy开始使用groovy功能。理解大多数Java代码,无需更改。

PS:这只是您可以做的,而不是您应该做的,除非向现有类中添加方法的想法真的很吸引您。

答案 5 :(得分:1)

否,您不能更改TreeView类。但是,对于Java 8+,您可以按照以下方式进行操作

String

确定Stream.of(foo, foo2, foo3).anyMatch(e -> e.equals(string)); 是否等于传递给string的任何参数。这不像简单的Stream.of()方法那样漂亮,但是它仍然可以完成工作而不必编写自己的方法