目前,管理少数对一组学生对象执行一组正常操作的算法。
我想让这些算法通用,以便我们可以对其他对象(如 Student)执行这些操作。
我在我的遗留代码库中看到,冗余代码可以替换为基于通用的代码。
将非通用代码转换为通用代码的最佳方法/良好做法是什么?
目前,管理少数对一组学生对象执行一组正常操作的算法。
我想让这些算法通用,以便我们可以对其他对象(如 Student)执行这些操作。
我在我的遗留代码库中看到,冗余代码可以替换为基于通用的代码。
将非通用代码转换为通用代码的最佳方法/良好做法是什么?
你的问题不清楚。如果你的意思是泛型Set<Object>
,那么如果你有一个可以在 a 上完成的操作,Set<Object>
你可以使用类似的东西:
public <T> void doSomethingOnSet(Set<T> set) {
for (T item : set) {
//do something fancy: let's print the first item:
System.out.println(item);
return;
}
}
您的方法现在可以在一组任何类型的对象上调用,而不仅仅是学生。
在 Java 教程中有一些示例如何将遗留代码转换为使用泛型:
http://docs.oracle.com/javase/tutorial/extra/generics/convert.html
Java Generics FAQ 也有关于处理遗留代码的小节:
http://www.angelikalanger.com/GenericsFAQ/FAQSections/ProgrammingIdioms.html#Coping%20With%20Legacy
没有例子很难给你更具体的东西。
你的问题很笼统:)。使您的代码通用的一个非常简单但粗略的示例是
public void updateStudent(Student student)
{}
到
public void updateObject(Object genericObject)
{
if( genericObject instanceof Student)
// do student specific operation
if( genericObject instanceof School)
// do schoolspecific operation
}
}
这只是一个示例,尽管它取决于您想要实现的实际要求。