java - Java 中的 typedef,尤其适用于数组类型

标签 java

我正在构建一个图形 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/

相关文章:

java - 如何从嵌入式软件开发过渡到Web开发?

java - 如何在WebView中加载新文件?

java - 序列化和反序列化同一对象并不反射(reflect)其状态的变化

java - Android:Google Maps API - 更改 map 工具栏的位置

java - encodeURL 和 encodeRedirectURL 之间的区别

java - 平板电脑可以打电话吗? (电话)

java - 在 Java 8 中将匿名内部方法转换为 Lambda

Java:NoSuchMethodException,即使该方法存在

Javafx:程序必须在应用程序启动的地方启动吗?

java - String 类中的 Substring 方法达到了它不应该达到的索引