我在 Java 中有两个非常相似的函数:
public Connector GetRelevantConnector(MyData myData, Connector c1, Connector c2) {
if(myData.useC1()){
return c1;
}
return c2;
}
Run Code Online (Sandbox Code Playgroud)
同样,我有以下功能:
public String GetRelevantConnector(MyData myData, String c1, String c2) {
if(myData.useC1()){
return c1;
}
return c2;
}
Run Code Online (Sandbox Code Playgroud)
上面的函数已经被简化,但无论如何,函数内部的所有逻辑都依赖于 myData 来选择 c1 或 c2。这些函数本质上是重复的代码,我想知道是否可以将 Connector/String 声明为泛型类型,并且无论泛型输入是什么,函数的返回类型都是如此。这可能吗?
是的,这就是 Java 的泛型方法的用途:
public <T> T GetRelevantConnector(MyData myData, T c1, T c2) {
if(myData.useC1()){
return c1;
}
return c2;
}
Run Code Online (Sandbox Code Playgroud)
请参阅https://docs.oracle.com/javase/tutorial/extra/generics/methods.html