gpt4 book ai didi

java - 如何将函数转换为扩展现有 Java 类的方法

转载 作者:行者123 更新时间:2023-12-02 12:10:36 26 4
gpt4 key购买 nike

我有以下简单函数,它返回字符串数组 (String[]) 中 String 的位置。

private int getIndexOf(String needle, String[] haystack) {
int indexOfNeedle = -1;
for (int index=0;index<haystack.length;index++) {
if (haystack[index].equals(needle)) {
indexOfNeedle = index;
break;
}
}
}

我想将其转换为 ArrayList 类的方法,以便我可以使用以下方式调用它:

String[] myArray = {"red","green","blue"};
int indexOfGreen = myArray.getIndexOf("green");

(我知道我可以包含一些现有的库,其中包括 indexOf 但重新发明这对我来说也是一个教训。)

我相信该方法将涉及扩展ArrayList,这可能是我需要扩展的类,因此我上面的函数需要修改以适应该扩展类...

而不是在方法版本中使用haystack,我还希望能够在this内部进行搜索,引用调用该方法的数组对象。

我还认为我可能需要用这个新的数组扩展类替换我的 String[] 数组(或者我可以使用重写将我的新方法包含在借口 String Array 类中吗?)。

正如我所说,这是为了帮助我学习如何在 Java 中执行此操作,因此练习本身可能看起来有点毫无意义,问题的重点并不是真正学习如何做到这一点查找数组中元素的位置 - 这只是一个示例。

最佳答案

(这个答案是基于评论,评论说问题是关于扩展函数的)

Java 扩展函数

Java 不允许扩展函数,但您可以使用其他替代方法

替代方案

  • 换行
    • 您可以拥有一个包含原始对象的类,并传递您想要使用的现有对象,同时实现新对象
  • 扩展名
    • 您可以扩展原始对象类型,但实例必须是您的新类型,而不是原始类型
    • 您只需要包含新方法,其余的传递给父类(super class)型

其他语言

其他一些 JVM 语言,例如 Kotlin,确实支持扩展函数,但 Java 本身不支持

关于java - 如何将函数转换为扩展现有 Java 类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46580614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com