java - 根据调用方法更改返回类型

标签 java generics reflection return-value typing

基本上,我想要的是两个返回值略有不同的公共(public)方法,以调用相同的方法来完成所需的任何工作。它们都返回私有(private)方法的返回值,但是私有(private)方法将根据调用它的公共(public)方法知道如何返回正确的值。

示例方法:

public Map<Type1, Type3> doSomething1();
public Map<Type2, Type3> doSomething2();

private Map<Type1/Type2, Type3> doSomething(); 

因此,在上面的示例中,doSomething() 返回 Type1 或 Type2 作为 Map 的键类型,具体取决于调用它的公共(public)方法。它将能够执行简单的检查,并使用正确类型的对象填充 map 。

也许这可以通过一些聪明的 Java 反射来完成?我不确定。这一切看起来都很狡猾,所以如果有更好的方法来解决这个问题,我会洗耳恭听。

最佳答案

我强烈建议在这里避免使用 reflection-mojo。一个函数必须正确地做一件事,不能依赖于调用它的人。

更好的方法是将 doSomething() 重构为更小的函数,创建两个名为 doSomethingFor1() 和 doSomethingFor2() 的新函数。这两个函数都可以重用旧 doSomething() 的重构部分。

现在调用 doSomething1() 并使用 doSomethingFor1()。

同样,doSomething2() 应该使用 doSomethingFor2()。

干杯,

jrh.

关于java - 根据调用方法更改返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/919355/

相关文章:

java - 使用坐标存储系统创建稀疏矩阵?

C# 泛型接口(interface)协方差

generics - 在 Kotlin 中从映射中过滤空键和值

java - 反射(reflect)一个只有包级访问权限的类

java - 无需高级扫描仪即可获取 Java 扫描仪输入

java - java中循环队列相对于栈的优势

java.sql.SQLException : could not use local transaction commit in a global transaction

java - 有没有类似Github的GWT主题?

java - JAXB:抽象绑定(bind)泛型类型的解码失败

Java反射无法访问动态更改的私有(private)字段值