我正在尝试创建一个名为“测量”的对象。这个测量对象只有一个方法,calculate()。 (可能是接口(interface)或类 - 不确定哪个最好)。
我有许多不同的测量(数百个,可能更多),我尝试实现它们的方式是拥有一个包含所有这些测量作为静态方法的类。
所以我本质上是尝试将静态方法从类加载到Measurement对象中,我可以在其中调用measurement.calculate()。
我开始实现它的方法,也是我能想到的唯一方法,是在 Reflection 中使用 Method 类,其中每个Measurement 都使用 Method 实例化(不同类中的静态测量方法)。然后,Measurement 类的calculate() 方法将调用实例化相应对象的方法。
实现此目的的最佳方法是什么?
谢谢!
最佳答案
这似乎是您已经决定了完成任务的方式,并且在此过程中产生了更复杂的问题。您一开始就建议您创建一个所有对象都将实现的接口(interface),结果很好。但是将它们全部分组在一个静态类中就是事情开始崩溃的地方。
更好的组织方式是让每个测量类实现其计算方法。这样,当您处理 Foos 时,您不必去一个包含与 Foos、Bars、Bizzes 和 Bazzes 相关的代码的大类。你说你可以有至少 100 个类,这首先会让你的静态类难以使用。您可能不需要那么多计算的实现。您将能够通过构建继承层次结构来实现这一点,该继承层次结构将进一步分割和组织您的代码。
public interface Measurable<T> {
T calculate();
}
public class Foo implements Measurable<Integer> {
private int a;
private int b;
@Override
Integer calculate() {
return a + b;
}
}
public class Foo implements Measurable<Double> {
private double a;
private double b;
@Override
Integer calculate() {
return a / b;
}
}
您有更多关于您实际正在寻找的内容的信息,但这是一个基本模板,应该提供一个很好的示例并展示如何使事情变得灵活。
关于java - 如何将另一个类中的方法转换为泛型类中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5083367/