是否可以#define Java中的类?

时间:2014-05-20 19:41:37

标签: java class preprocessor

我正在使用ProGAL包。有两个不同的类,ProGAL.geom2d.PointProGAL.geom3d.Point。两者都被称为Point。当我导入一个时,我只能通过输入完整路径来使用另一个。例如:

import ProGAL.geom3d.Point;
//...
Point pointIn3D = new Point(1,2,3);
ProGAL.geom2d.Point pointIn2D = new ProGAL.geom2d.Point(4,5);

我想使用像

这样的东西
#define ProGAL.geom3d.Point point3d 
#define ProGAL.geom2d.Point point2d

就像在C ++中一样。是否可以使用Java?

用法如下:

point3d pointIn3D = new point3d(1,2,3);
point2d pointIn2D = new point2d(1,2,3);

3 个答案:

答案 0 :(得分:1)

不可能,因为Java不允许预编译指令。

答案 1 :(得分:1)

不可能,因为Java中没有#typedef#define(没有预处理器)。您可以尝试编写另一个类来封装您想要重命名的类,或者只是拥有大量代码提交。

我想要注意的是,我不认为你应该尝试改变课程的名称。它的名字有一个原因。如果你打算在另一个类中使用它,那么一个人知道他们正在使用的实际类是非常有用的。 这个我认为是好的阅读/可用性。我不认为将烟幕放在不需要存在的地方是件好事。这个名字足够描述。

答案 2 :(得分:1)

答案是。如this链接所述,typedef#define关键字被接受为并发症,并在Java中删除,因为它们会降低代码的可读性。