如何使用包含完全相同类型但用其他类型参数化的参数的参数列表来重载方法

2023-12-29

我有一个方法:

public List<Integer> convertBy(Function<String, List<String>> flines, Function<List<String>, String> join, Function<String, List<Integer>> collectInts) {
    return collectInts.apply(join.apply(flines.apply((String) value)));
}//first method

public Integer convertBy(Function<List<String>, String> join, Function<String, List<Integer>> collectInts, Function<List<Integer>, Integer> sum) {
    return sum.apply(collectInts.apply(join.apply((List<String>) value)));
}//second method

尽管它们的参数使用不同的类型进行参数化,但我无法重载第一个方法。我可能会使用不同的界面,除了Function<T,R>但不知道哪一个就足够了,因为我浏览了它们的列表但找不到一个https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html.

这些函数中的参数是:

flines- 从给定路径读取文件(String)并返回该文件中的行列表(List<String>)

join- 连接给定的元素List<String>并返回一个String

collectInts- 解析给定的String并返回其中找到的整数列表String.

sum- 添加元素来自List<Integers>并返回总和

问题:

  1. 我可以用第二个方法重载第一个方法吗?

  2. 除了 function 之外,我还可以使用哪些其他现有的功能接口?我认为没有,因为论证的类型和结果总是不同的。


如果您想创建一个应用多个函数并且对中间值不感兴趣的方法,您可以将其设为通用方法。你问题中的代码很奇怪,因为它假设value可以是一个String and a List<String>同时。

但与你的另一个问题 https://stackoverflow.com/q/33298519/2711488,有不同的画面。虽然 varargs 方法不能以这种方式工作,但您可以轻松地为实际用例提供重载方法:

public class InputConverter<T> {

    private T value;

    public InputConverter(T value) {
        this.value = value;
    }
    public <R> R convertBy(Function<? super T, ? extends R> f) {
        return f.apply(value);
    }
    public <T1,R> R convertBy(
        Function<? super T, ? extends T1> f1, Function<? super T1, ? extends R> f2) {
        return f2.apply(f1.apply(value));
    }
    public <T1,T2,R> R convertBy(
        Function<? super T, ? extends T1> f1, Function<? super T1, ? extends T2> f2,
        Function<? super T2, ? extends R> f3) {
        return f3.apply(f2.apply(f1.apply(value)));
    }
    public <T1,T2,T3,R> R convertBy(
        Function<? super T, ? extends T1> f1, Function<? super T1, ? extends T2> f2,
        Function<? super T2, ? extends T3> f3, Function<? super T3, ? extends R> f4) {
        return f4.apply(f3.apply(f2.apply(f1.apply(value))));
    }
}

假设您修复了接口类型并创建了函数,如中所述这个答案 https://stackoverflow.com/a/33300743/2711488,你可以像这样使用它

InputConverter<String> fileConv=new InputConverter<>("LamComFile.txt");
List<String> lines = fileConv.convertBy(flines);
String text = fileConv.convertBy(flines, join);
List<Integer> ints = fileConv.convertBy(flines, join, collectInts);
Integer sumints = fileConv.convertBy(flines, join, collectInts, sum);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用包含完全相同类型但用其他类型参数化的参数的参数列表来重载方法 的相关文章

  • 在 Java 中克隆对象 [3 个问题]

    这样做会调用Asub的clone方法吗 或者Asub深度克隆是否正确 如果没有的话 有没有办法通过这种方法对Asub进行深度克隆呢 abstract class Top extends TopMost protected Object cl
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 从 scala 的 Type 获取 ParameterizedType?

    有用的是 scala 的 Universe typeOf 保留了类的类型参数 import scala reflect runtime universe case class X T TypeTag val t typeOf T e g S
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供

随机推荐

  • Telegram 机器人键盘通过 JSON 发送

    我正在使用 MS Bot 框架 我想向用户发送自定义键盘 因此我尝试使用以下 JSON 回复消息 public async Task
  • Django 查询集上的 Count() 与 len()

    在 Django 中 鉴于我有QuerySet我要迭代并打印结果 计算对象的最佳选择是什么 len qs or qs count 另外考虑到在同一迭代中计算对象也不是一种选择 虽然Django 文档 https docs djangopro
  • 如何在 Django 中实现 Northwind

    我正在尝试使用 Django admin 在 MySQL 中实现 Northwind 数据库模型来显示数据 有人知道如何从原始模型中 干净 地做到这一点吗 是否有任何功能实现可供下载 模型 管理 接下来是完全未经尝试的程序 不确定你所说的
  • 实体框架 6 Code First int Identity 列值第一行为零

    首次执行 update database 命令以使用种子数据填充数据库后 发现所有 int Id 列均以零 0 开头 而不是预期的一 1 在 Configuration cs 中的 Seed 方法顶部为每个实体 表添加了以下 2 行代码 注
  • 如何使用 VBA 将“整个”DAO 记录集插入表中

    我有一个 DAO 记录集 可以很好地创建 我可以将记录从该集传输到表中 这是逐行完成的并且效果很好 但是我一次传输大量数据 因此这可能需要很长时间一行一行 有没有一种方法可以一次性传输整个记录集 而不是逐行传输 请参阅下面的当前使用的代码
  • GitKraken 不允许我在 GitLab 上打开我的私有存储库

    所以 除了GitKraken 不允许我从 GitHub 上的私人存储库进行克隆 https stackoverflow com questions 41945280 gitkraken wont let me clone from a pr
  • 如何在osx中​​创建虚拟键盘?

    我想在 osx 中创建一个虚拟键盘 是否可以 我的意思是我可以制作一个程序来提供与真实键盘相同的信号吗 这种键盘的示例是屏幕键盘或键盘查看器 顺便说一句 它是否有必要的界面 我应该从多低开始 我应该制作一个设备驱动程序吗 虚拟 无线 键盘
  • 为什么 printf() 是一个不纯函数?

    据我所知 不纯函数是那些在使用相同参数调用时并不总是返回相同值的函数 我一定遗漏了一些东西 或者可能是错误的 如果我是的话 请纠正我 那么为什么是printf 被认为是不纯函数吗 纯 函数lacks 副作用 too 换句话说 无论你调用多少
  • 如何使用 pytest 对测试失败采取行动?

    我正在使用 pytest 我想收集 保存一些数据 以便对测试失败进行事后分析 我可以写一个teardown method 但我没有看到在这种情况下获得测试状态的方法 是否可以对任何测试采取行动 或assertion 失败 实施一个pytes
  • 从超过 max_retries 失败的任务中恢复

    我尝试异步使用 Web 服务 因为它最多需要 45 秒才能返回 不幸的是 这个 Web 服务也有些不可靠 并且可能会引发错误 我已经设置了django celery并让我的任务执行 这工作正常 直到任务失败为止max retries 这是我
  • NHibernate 抛出会话已关闭

    我在风中拍打 所以我想我应该在这里问 请让我知道这是否是显而易见的并且之前已得到回答 我正在构建一个 MVC 3 网站 当我与一个用户一起运行它时 我可以单击页面来运行它 该网站运行良好 然而 如果我疯狂地点击刷新 最终我会点击 会话已关闭
  • 如何在 Amazon ElasticBeanstalk 上安装的 Java 应用程序上将 http 请求重定向到 https

    我正在使用 Amazon ElasticBeanstalk 进行 Java EE Web 应用程序部署 我希望我的应用程序只能是 https 因此我在 ElasticLoadbalancer 上配置了 SSL 证书 我也将 web xml
  • 在 GitHub 组织中的所有 Git 存储库中搜索模式

    我有一个 GitHub 组织 该组织中有大约 250 个属于不同团队的存储库 我拥有组织帐户的管理员访问权限 有没有一种方法可以在所有这些存储库中搜索模式 最好是通过 GitHub 的 Web 界面 我们计划更新一些 jar文件位置 但我们
  • boost序列化1.5.5遇到Nan和Inf时崩溃

    看来boost序列化无法从基于文本的档案中恢复Nan和inf的值 除非您处理该程序 否则该程序将终止archive exception在这种情况下 有什么解决办法吗 图书馆的作者有话要说 http lists boost org boost
  • 网站未使用 blogdown 和 Hugo 进行更新

    我知道这个问题可能会因为导致错误的代码重现性不足而被否决 但我对这个错误感到非常惊讶 我什至不知道从哪里开始足够清楚地解释它 因此我提前道歉 此问题已在两台不同的计算机上发生过两次 我使用 Hugo academic 主题在 R Studi
  • 没有 freetds.conf 的 FreeTds

    我可以在没有 freetds conf 的情况下运行 FreeTds API 吗 C C 据我记得 可以在没有旧的 interfaces 文件的情况下使用Sybase ctlib None
  • 如何在 Go 中的 POST 请求中发送 JSON 字符串

    我尝试使用 Apiary 并制作了一个通用模板来将 JSON 发送到模拟服务器并具有以下代码 package main import encoding json fmt github com jmcvetta napping log net
  • 调整 ScrollViewer.CompulatedVerticalScrollBarVisibility 更改上的列表视图列大小

    我正在使用一个星形转换器具有相对大小的列表视图列 https stackoverflow com questions 6338930 how to resize wpf listview proportionally 11421253 11
  • 如何获取程序集的根命名空间?

    给定一个实例System Reflection Assembly 当我想通过其清单资源流从当前程序集加载资源时 我多次遇到这种困境 事实上 如果使用 Visual Studio 将文件作为资源嵌入到程序集中 则其清单资源名称将从 Visua
  • 如何使用包含完全相同类型但用其他类型参数化的参数的参数列表来重载方法

    我有一个方法 public List