基本上,我想要的是两个返回值略有不同的公共(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/