首页 > 解决方案 > 更改类从 Java 扩展的内容

问题描述

在 Java 中,我需要轻松切换类正在扩展的内容。准确地说,我必须将我的应用程序部署到两个不同的平台,其中一个支持 Java Timers 和 TimerTasks,另一个有它自己的实现(也称为 Timer 和 Timertask,具有相同的方法名称但它们自己的实现)。

本质上,我需要能够在这个用例的 TimerTask 类之间轻松切换:

private class TimerTaskImpl extends TimerTask {

^^^ 在上面的一个平台上 TimerTask 将是 Java 的,而在另一个 TimerTask 将是该平台使用的手动实现。

标签: javatimerextendstimertask

解决方案


你能做这样的事情吗?

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。


推荐阅读