Java:如何修改子类的实例变量

时间:2010-12-14 01:30:10

标签: java inheritance

故事是这样的:

我有一个名为Algorithms的抽象类和许多扩展它的类。其中一些有调整参数。有些人没有,有些人有5人。

我想在算法中有一个可以调整任意参数的方法。 e.g:

public static void tune (String paramName, double minValue, double MaxValue) 
{ ... }

所以我可以在'类SoftRankBoots扩展算法'上这样调用它:

Algorithm srb = new SoftRankBoost();
srb.tune("delta", 0, 1);

注意SoftRankBoost有一个实例变量'double delta';

我怎样才能做到这一点?

谢谢。

3 个答案:

答案 0 :(得分:3)

不是在Abstract类中实现方法,而是将它作为一个抽象方法,实现类必须实现。

所以

public abstract void tune (String paramName, double minValue, double MaxValue);

看不到你想要做的事情的全貌,很难给你更好的建议。但是你的建议似乎只是一个坏主意。

答案 1 :(得分:2)

看一下Reflections API:

最后一个链接包含示例源代码。

注意:如果你需要用Java进行反射,那么你的设计可能不像它那样干净。

答案 2 :(得分:0)

我认为'Algorithm'类的子类彼此不同,因此Template Method模式或Strategy模式可能会为您提供一些有用的概念来解决您的问题。