java - 更改类从 Java 扩展的内容
问题描述
在 Java 中,我需要轻松切换类正在扩展的内容。准确地说,我必须将我的应用程序部署到两个不同的平台,其中一个支持 Java Timers 和 TimerTasks,另一个有它自己的实现(也称为 Timer 和 Timertask,具有相同的方法名称但它们自己的实现)。
本质上,我需要能够在这个用例的 TimerTask 类之间轻松切换:
private class TimerTaskImpl extends TimerTask {
^^^ 在上面的一个平台上 TimerTask 将是 Java 的,而在另一个 TimerTask 将是该平台使用的手动实现。
解决方案
你能做这样的事情吗?
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。
推荐阅读
- python - 我收到 SyntaxWarning: "is" 的文字。你的意思是“==”吗?
- javascript - 如何正确调用 JavaScript 函数?
- python-3.x - 有没有办法替换字符串中两个字符对之外的所有空格?
- reactjs - 在 mobx 商店中更改状态时,Ant-Design Table 不呈现
- javascript - 这是什么意思?JS 表达式值 = !1
- elasticsearch - 带有弹性搜索的真实单词拼写检查器
- go - 具有多个一对多关系的模型
- python - 使用 pyspark 将数组动态转换为列
- node.js - create-react-app 的 package.json 中的“代理”字段如何工作?
- flutter - Flutter:应用程序卡在加载屏幕上