Java中的宏?

前端之家收集整理的这篇文章主要介绍了Java中的宏?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道 Java中没有宏,但是有一个解决方法来做这样的事情:
#ifdef _FOO_FLAG_
import com.x.y.z.Foo;
#else
import com.a.b.c.Foo;
#endif

两个Foo类都有相同的方法.其中一个来自第三方图书馆.我想通过更改单行代码,可以轻松切换到默认库.这可能吗?

编辑:
这两个类都不在我的控制之下(其中一个来自Android项目的sqlCipher,另一个来自Android SDK).我需要这个,因为sqlCipher库目前在SAMSUNG手机上不起作用.

解决方法

不,Java中没有常用的预处理器(尽管您可以在Java代码中使用C预处理器,但是我会阻止它,因为这将是非常不寻常的,会破坏大多数处理代码的工具).这样的选择通常在运行时完成,而不是Java中的编译时.

通常的Java方式是让两个类实现相同的接口,并通过接口引用它们:

IFoo myFoo;
if (FOO_FLAG) { // possibly a public static final boolean
  myFoo = new com.x.y.z.Foo();
} else {
  myFoo = new com.a.b.c.Foo();
}

如果这是不可能的(例如,如果至少有一个Foo类不在您的控制之下),那么您可以通过一个抽象的FooWrapper类(或接口)与两个不同的实现(XYZFooWrapper,ABCFooWrapper)实现相同的效果.

原文链接:https://www.f2er.com/java/122393.html

猜你在找的Java相关文章