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