编程语言
首页 > 编程语言> > Java中固定大小数组的替代选择?

Java中固定大小数组的替代选择?

作者:互联网

[上下文:Java新手,顶峰4个月; C的老手.]

我正在一个需要在许多地方使用固定大小的数组(“固定字符串”)的库.我正在尝试使用Dependency Injection(q.v.)来解决这个特定问题,所以我希望使用以下形式:

class Foo 
{
    private Bar injectedBar;
    private char[] injectedFixedString;

    Foo(Bar injectedBar, /* what can go here? */ char[5] injectedFixedString);
    { /* initializing code goes here /* }
}

简单是必需的-这正在进入自动生成的通信协议中.我对协议及其衍生自的数据库的控制为零;在最终代码中,我将有数百个(如果不是数千个)这些实例.因此,鉴于所有这些:

是我对C的唯一选择:

char injectedFixedString[5];

创建一个自定义类?就像是:

class FixedBarString {
    /* could also set this in the constructor, but this complicates code generation a tad */
    public static integer STRING_SIZE = 5; /* string size */
    char[] fixedString = new char[STRING_SIZE];

    FixedBarString(char[] string) throws RuntimeException {
      /* check the string here; throw an exception if it's the wrong size.
         I don't like constructors that throw however. */
    }

    public void setString(char[] string) throws RuntimeException {
      /* check the string here */
    }

    public char[] getString() {
      /* this isn't actually safe, aka immutable, without returning clone */
    }

    public char[] createBlankString() {
      return new char[STRING_SIZE];
    }
}

谢谢. (如果代码太多,我深表歉意).

解决方法:

除非您准备为每种长度准备一个新的类:FixedBarString4,FixedBarString5等,否则确实无法通过静态保证的长度来完成所需的操作(可以为单个链接的char列表创建一个类,使用泛型对长度进行编码,但是我怀疑您是否想在现实世界中使用它.

标签:fixed-width,arrays,java,c-4
来源: https://codeday.me/bug/20191023/1914009.html