Java中的typedef,特别是数组类型

Java中的typedef,特别是数组类型,java,Java,我正在构建一个图形GIO,具有以下界面: public interface GraphModel { public java.util.List<java.awt.geom.Point2D[]> getLayers(); ... } 但是这不是很好,因为(i)你不能像这样扩展数组,并且(ii)我怀疑创建一个哑类的智慧只是为了模拟一个java没有的语言特性(C++ Type Fux/Cuff>)。 我是不是遗漏了什么?可能是泛型,但我实际上丢失了所有类型信息。使用导

我正在构建一个图形GIO,具有以下界面:

public interface GraphModel
{
    public java.util.List<java.awt.geom.Point2D[]> getLayers();
    ...
}
<>但是这不是很好,因为(i)你不能像这样扩展数组,并且(ii)我怀疑创建一个哑类的智慧只是为了模拟一个java没有的语言特性(C++ <代码> Type Fux/Cuff>)。 我是不是遗漏了什么?可能是泛型,但我实际上丢失了所有类型信息。

使用导入语句:

import java.awt.geom.Point2D;
import java.util.List;

public interface GraphModel
{
    public List<Point2D[]> getLayers();
    ...
}
导入java.awt.geom.Point2D;
导入java.util.List;
公共接口图形模型
{
公共列表getLayers();
...
}
也更喜欢列表而不是数组:

import java.awt.geom.Point2D;
import java.util.List;

public interface GraphModel
{
    public List<List<Point2D>> getLayers();
    ...
}
导入java.awt.geom.Point2D;
导入java.util.List;
公共接口图形模型
{
公共列表getLayers();
...
}

并考虑使用JavaFX代替AWT/Swing。

< P>

和使用

public interface GraphModel{
    public List<LayerType> getLayers();
    ...
}
公共接口图形模型{
公共列表getLayers();
...
}

注意:如果数组的大小是可变的且事先未知,最好使用
List
而不是
Point2D[]

Java没有
typedef
s。虽然这在语法上没有什么不同,但您可以通过使用
import
s(大多数现代IDE都会将其折叠起来,这样它们就不会刺激您的眼睛)来保存一些文本膨胀:

import java.util.List;
导入java.awt.geom.Point2D;
公共接口图形模型
{
公共列表getLayers();
...
}
您真正拥有的唯一选项是创建一个包装数组的伪类:

public class MyPoints {
    private Point2D[] myPoints;

    /* constructors, getters, setters, some logic you may have */
}

public interface GraphModel
{
    public List<MyPoints> getLayers();
    ...
}
公共类MyPoints{
私有点2d[]myPoints;
/*构造函数、getter、setter和一些您可能有的逻辑*/
}
公共接口图形模型
{
公共列表getLayers();
...
}

公共类LayerType Extendes java.awt.geom.Point2D{}可以做到这一点,但是创建一个不受欢迎的欺骗类不是吗?我害怕我的代码审查员会为我辩护。
public interface GraphModel{
    public List<LayerType> getLayers();
    ...
}
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();
    ...
}