【发布时间】:2017-07-06 22:59:18
【问题描述】:
我有一个要求,在函数中需要不同的参数并返回唯一的对象。所有这些函数都执行相同的操作。
即。
public returnObject1 myfunction( paramObject1 a, int a) {
returnObject1 = new returnObject1();
returnObject1.a = paramObject1.a;
return returnObject1;
}
public returnOject2 myfunction( paramObject2 a, int a){
returnObject2 = new returnObject2();
returnObject2.a = paramObject2.a;
return returnObject2;
}
正如您在上面看到的,这两个函数都执行相同的任务,但它们将不同的参数作为输入并返回不同的对象。
我想尽量减少编写执行相同任务的不同函数。
是否可以为此编写一个通用方法,可以根据对函数的调用替换参数?
paramObject 和 returnObject 基本上是两个具有不同变量的类。它们彼此无关。
我的目标是我不想做函数重载,因为函数做几乎相同的工作。我想要一个可以处理不同输入和不同返回输出的函数。
我的目标是做这样的事情(如果可能的话):
public static < E > myfunction( T a, int a ) {
// do work
}
返回类型 E 和输入 T 可以保持变化。
【问题讨论】:
-
如果没有关于 paramObject1 和 paramObject2 是什么的更具体信息,这很难回答。如果它们是相似的类型,也许您应该保留这两个公共方法,将公共代码移动到新的私有方法,并让每个方法调用该私有方法。
-
“paramObject”和“returnObject”是如何连接的?
-
您的意思是处理方式相同,但对象类型不同?如果是这样,并且如果它们共享相同的方法名称,您可以编写类似
public T myfunction(T param, int a)的内容 -
也许 public Object[] myFunction(int a , Object... abstractObjectArray) 听起来也很有帮助
-
现在看来@Radiodef 所说的对我来说很有意义。我必须创建和接口或抽象类来处理这个。
标签: java generics java-8 generic-method