The*_*ant 4 java generics reflection typing return-value
基本上我想要的是,两个公共方法具有稍微不同的返回值,可以调用相同的方法来完成所需的任何工作.它们都返回私有方法的返回值,但私有方法将知道如何根据调用它的公共方法返回正确的值.
示例方法:
public Map<Type1, Type3> doSomething1();
public Map<Type2, Type3> doSomething2();
private Map<Type1/Type2, Type3> doSomething();
Run Code Online (Sandbox Code Playgroud)
因此,在上面的示例中,doSomething()返回Type1或Type2作为Map的键类型,具体取决于调用它的公共方法.它将能够执行简单的检查,并使用正确类型的对象填充地图.
也许这可以通过一些聪明的Java反射来完成?我不确定.这一切看起来都很狡猾,所以如果有更好的方法可以解决这个问题,我会全神贯注.
我强烈建议在这里避免使用反射魔法.一个函数必须在属性上做一件事,而不是取决于谁调用它.
更好的方法是将doSomething()重构为更小的函数,创建两个名为doSomethingFor1()和doSomethingFor2()的新函数.这两个函数都可以重用旧的doSomething()的重构部分.
现在有doSomething1()调用并使用doSomethingFor1().
同样,doSomething2()应该使用doSomethingFor2().
干杯,
JRH.