[ Контекст: новинка для Java, 4 месяца вершин;Старая рука в C ++. ]
Я работаю над библиотекой, которая требует массив фиксированного размера ("фиксированная строка") во многих местах.Я пытаюсь использовать Dependency Injection (qv) для этой конкретной проблемы, поэтому я хотел бы что-то вроде:
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];
}
}
Спасибо.(Мои извинения, если это слишком много кода).