Изменить то, что класс расширяется от Java - PullRequest
0 голосов
/ 23 октября 2019

В Java мне нужно легко переключаться на то, что расширяет класс. Чтобы быть точным, я должен развернуть свое приложение на двух разных платформах, где одна поддерживает Java Timers и TimerTasks, а другая имеет свои собственные реализации (также называемые Timer и Timertask с теми же именами методов, но их собственной реализацией).

По сути, мне нужно иметь возможность легко переключаться между классами TimerTask для этого случая использования:

private class TimerTaskImpl extends TimerTask {

^^^ где выше в одной платформе TimerTaskбудет Java, а в другой TimerTask будет ручная реализация, используемая этой платформой.

1 Ответ

0 голосов
/ 23 октября 2019

Можете ли вы сделать что-то подобное?

interface MyTimerTask {
    ...
}

class TimerTaskImpl1 extends java.util.TimerTask implements MyTimerTask {

}

class TimerTaskImpl2 extends other.TimerTask implements MyTimerTask {

}


public class TimerTaskFactory {

    public static MyTimerTask createTimerTask() {
        MyTimerTask timertask = null;
        try {
            Class.forName( "java.util.TimerTask" );
            timertask = new TimerTaskImpl1();

        } catch( ClassNotFoundException _ex ) {
            //java.util.TimerTask class isn't there!
            timertask = new TimerTaskImpl2();
        }

        return timertask;
    }
}

... или что-то подобное в зависимости от вашего TimerTaskImpl.

...