【问题标题】:Java exceeding the 65535 bytes with Array of Points and LlinesJava 超过 65535 字节的点和线数组
【发布时间】:2013-01-23 22:05:34
【问题描述】:

所以我有一个点数组

Point[] point ={new Point (x,y), ....}

以及来自这些点的一系列线

Line[] line = {new Line(point[1],point[5]),....}

如果我将它存储在一个类中,我会超过 65535 个字节。

我想从外部文件中获取它,因为无法将它们拆分到其他类中。 但是线条必须从点数组中获取它们的点。

那么如果有人知道如何做到这一点?

【问题讨论】:

  • 等等,你是在 类定义中定义了 65,536 个文字 Point 对象吗?
  • @LouisWasserman 比这少了很多点,但仍然是一个很好的问题 - “为什么类定义中有 这么多?” :P
  • @LouisWasserman 方法的长度限制为 65536 字节,即使是初始化程序也是如此。它是生成的字节码来构建需要很长时间的数组。
  • 我会重新审视“没有选择”的假设。
  • 从资源加载是首选,但如果你想在一个类中进行,你总是可以使用多种初始化方法。

标签: java arrays


【解决方案1】:

从文本文件中读取点,例如

x0 y0
x1 y1
... etc

将行读为一系列点数

1 5 etc
0 3 6 9 etc

您可以使用 BufferedReader 和 split() 或小心使用 Scanner。

您可以将线定义为一系列点,而不是提前定义所有点。这将更容易维护。

1,2 3,4 5,6 etc
2,1 4,5 0,7 etc

【讨论】:

    【解决方案2】:

    您可以使用静态初始化程序:

    static {
       Point[] points;
       int i =0;
       for(int x=0;x<something;x++){
           for(int y=0;y<something;y++){
               point[i] = new Point(x,y);
           }
       }
    }
    

    如果这些点无法计算,因为它们是值,请将它们存储在一个文件中,就像 peter 所写的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2016-06-10
      • 2018-06-10
      相关资源
      最近更新 更多