如何使用java泛型删除重复代码
我有以下几种方法 之前:如何使用java泛型删除重复代码,java,generics,java-8,Java,Generics,Java 8,我有以下几种方法 之前: Employee getEmployee(String id){ String url = "http://localhost" + id; //duplicate code } List<Employee> getEmployees(){ String url = "http://localhost"; //duplicate code } <T> T get(id){ //here duplicate code from ab
Employee getEmployee(String id){
String url = "http://localhost" + id;
//duplicate code
}
List<Employee> getEmployees(){
String url = "http://localhost";
//duplicate code
}
<T> T get(id){
//here duplicate code from above 2 methods
}
Employee getEmployee(String id){
return get(id);
}
List<Employee> getEmployees(){
return get(null);
}
Employee-getEmployee(字符串id){
字符串url=”http://localhost“+id;
//重复代码
}
员工名单(){
字符串url=”http://localhost";
//重复代码
}
在以上两种方法中,我有重复的代码,我尝试了以下方法:
之后:
Employee getEmployee(String id){
String url = "http://localhost" + id;
//duplicate code
}
List<Employee> getEmployees(){
String url = "http://localhost";
//duplicate code
}
<T> T get(id){
//here duplicate code from above 2 methods
}
Employee getEmployee(String id){
return get(id);
}
List<Employee> getEmployees(){
return get(null);
}
T获取(id){
//这里重复上述两种方法的代码
}
Employee getEmployee(字符串id){
返回get(id);
}
员工名单(){
返回get(null);
}
我是泛型新手,如何解决上述重复问题 乍一看,您似乎有下一个选择:
Employee-getEmployee(字符串id){
返回(员工)获取(id);
}
员工名单(){
返回(列表)获取(空);
}
我相信会有更好的选择。你也可以分享被移除的部分,也许可以改进。老实说,我担心它是否完全相同。如果代码确实是完全重复的,那么就不需要泛型。只需将重复的代码提取到私有方法中即可。@orSt如何返回动态返回类型?@john如何处理传递的
null
?我想知道为什么代码是重复的?您是否从某处获取id
s列表,并以getAllEmployees
的名义为其执行get(id)
?使用公共代码创建一个私有方法。以上是一种经常发生的模式,任何一方都应该接受这种重复。但是千万不要使用像get(null)
这样的东西。