Java: как изменить переменную экземпляра дочернего класса - PullRequest
0 голосов
/ 14 декабря 2010

История выглядит так:

У меня есть абстрактный класс под названием Algorithms и множество классов, расширяющих его. Некоторые из них имеют параметры для настройки. У некоторых их нет, а у некоторых до 5.

Я хотел бы иметь метод в алгоритмах, который может настроить произвольный параметр. e.g.:

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

Так что я могу назвать это так в «Алгоритме класса SoftRankBoots extends»:

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

Обратите внимание, что SoftRankBoost имеет переменную экземпляра 'double delta';

Как мне этого добиться?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 14 декабря 2010

Вместо реализации метода мелодии в классе Abstract оставьте его абстрактным методом, который должны реализовать классы реализации.

Итак

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

Без полной картины того, что вы пытаетесь сделать, трудно дать вам лучший совет. Но то, что вы предлагаете, в целом кажется плохой идеей.

2 голосов
/ 14 декабря 2010

Взгляните на API Reflections:

Последняя ссылка содержит пример исходного кода.

Примечание. Если вам нужно отражение в Java, ваш дизайн может быть не таким чистым, как мог бы.

0 голосов
/ 14 декабря 2010

Я думаю, что подклассы класса «Алгоритм» отличаются друг от друга, поэтому шаблон Template Method или шаблон Strategy могут дать вам полезную концепцию для решения проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...