我正在构建一个图形 GIO 并具有以下界面:
public interface GraphModel
{
public java.util.List<java.awt.geom.Point2D[]> getLayers();
...
}
但我发现我必须使用 java.awt.geom.Point2D[]
的事实特别令人厌恶,因为它会出现在一大堆其他接口(interface)函数中。我想做的是:
public interface GraphModel
{
public class LayerType extends java.awt.geom.Point2D[]{};
public java.util.List<LayerType> getLayers();
...
}
但这并不好,因为 (i) 你不能像这样扩展一个数组,并且 (ii) 我质疑创建一个虚拟类只是为了模拟语言特性的智慧(C++ typedef
) Java 没有。
我是不是漏掉了什么?也许是泛型的东西,但我实际上丢失了所有类型信息。
最佳答案
Java 没有typedef
。虽然这在语法上没有什么不同,但您可以使用 import
来避免一些文本膨胀(大多数现代 IDE 都会折叠起来,以免刺激您的眼睛):
import java.util.List;
import java.awt.geom.Point2D;
public interface GraphModel
{
public List<Point2D[]> getLayers();
...
}
您真正拥有的唯一选择是创建一个包装数组的虚拟类:
public class MyPoints {
private Point2D[] myPoints;
/* constructors, getters, setters, some logic you may have */
}
public interface GraphModel
{
public List<MyPoints> getLayers();
...
}
关于java - Java 中的 typedef,尤其适用于数组类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26399635/