【问题标题】:Is it possible to add customize method in String class? [duplicate]是否可以在 String 类中添加自定义方法? [复制]
【发布时间】:2017-04-10 15:31:29
【问题描述】:

我正在尝试在 java 中添加对字符串变量进行操作的自定义函数(实际上是在我的 android 项目中)

String name="tester";
name.isAlreadyEntered();

public static boolean isAlreadyEntered(String name){
    return (checkInMyDb(name));
}

我打算将它用于更多功能。我知道这是一个有点愚蠢的问题。我知道这确实存在于javascript 和.Net 中。由于我是 java 新手,所以我不知道它的可能性。如果我问错了,请原谅。但如果可能,请帮助我了解如何获取此语法

【问题讨论】:

  • Java 不支持向标准类添加新方法的能力。
  • String 类是最终类,因此您甚至不能对其进行子类化。
  • 没有多大意义。如果您的数据库有一个类,您可以在其中添加它并使用类似myDatabase.containsPerson(name) 的东西。更具表现力,因为isAlreadyEntered() 没有为您提供有关您希望输入它的位置的任何上下文。
  • 为什么你希望将方法添加到现有的类中,也就是声明为 final 的。如果这是您真正打算做的(向 String.java 添加方法),那么您真的需要重新考虑和重新设计。正如我所看到的,您可以在某些类中简单地使用一个方法,您可以在其中检查name 是否存在于数据库中,为什么以及需要修改String.java

标签: java


【解决方案1】:

如果你真的打算向java.lang.String.java 添加一个新方法,那么你可能走错了路,这只会在未来引起痛苦和痛苦:d。最好停下来,重新考虑重新设计和重构。

无论如何,首先NO您不能向String 类添加新方法。它是最终的,因此您不能也不应该打算将其子类化。如果您打算这样做,那么它的设计很糟糕,您必须对其进行重构。

如果你只是想检查一些String是否存在于数据库中,你可以简单地声明可以接受String类型参数的方法,检查它在数据库中的存在,如果找到则返回true,否则返回假的。

如果上述解决方案对您不起作用,那么您可以尝试使用 Composition 的 takimg 帮助。如果你想要一个具有这种方法的对象(它可以判断对象是否存在于数据库中),那么你可以创建一个类,可以根据你的上下文需要来命名它,我将它命名为StringContainer。这个类可以有一个String 类型的实例变量。现在,您可以使用这个新创建的自定义类的对象来组成String 的对象,而不是使用 String 对象。您可以包含一个方法来检查是否已在数据库中创建了与此类对象对应的条目。

【讨论】:

    猜你喜欢
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    相关资源
    最近更新 更多