在 C++ 中,我可以编写一个模板函数,将数据类型作为参数,这样单个函数就可以重复用于多个数据类型。是否有在 Java 中做类似事情的规定?
谢谢,
罗杰
最佳答案
这个人问的不是泛型。他在询问 <algorithm>
中指定的那种模板函数。 .您在 Java 中最接近的可能是为您希望能够调用的每个函数类型定义(通用化)接口(interface),然后推出您自己的实用程序库,该实用程序库接受接口(interface)的实例作为输入。例如,您可以创建以下界面
public interface UnaryOperator<T> {
public boolean test(T item);
}
然后像这样创建一个工具类
public class Algorithms {
public static <T> void removeIf(Collection<T> c, UnaryOperator<T> op) {
Iterator<T> itr;
for (itr = c.iterator(); itr.hasNext(); ) {
T item = itr.next();
if (op.test(item)) {
itr.remove();
}
}
}
}
您实际上可以在 Apache Commons Collections 库中找到此模式,但它不如 C++ 算法库灵活或广泛。我认为给出 STL 仿函数和算法库的任何特定示例,您将能够用 Java 编写类似的东西,但据我所知,没有内置的等价物。我认识的大多数人(甚至 C++ 开发人员)都考虑 <algorithm>
非常神秘。
关于java - Java 中的 Mmimic C++ 模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2071110/