В Java размер массива не является частью его типа. Или, говоря иначе, все типы массивов с заданным базовым типом одинаковы. Кроме того, вы не можете использовать метод подписи, который устанавливает ограничения на размер типизируемого массива или результат.
Это означает, что вы остаетесь с кодированием метода, чтобы проверить (в вашем случае) длину массива, который он собирается возвратить. Это, вероятно, не поможет вам, потому что я предполагаю, что вы пытаетесь использовать статическую типизацию для обеспечения «трюки» ваших массивов. Из ответа этой точки зрения @ Matt B находится на деньги, хотя вы могли бы сделать это сделать так, чтобы по-прежнему дает вам массивы (длины 3):
public class AdapterTriple {
private Adapter[] adapters;
/**
* This constructor may throw an exception
*/
public AdapterTriple(Adapter[] adapters) {
if (adapters.length != 3) {
throw new IllegalArgumentException("array length is wrong");
}
this.adapters = adapters;
}
/**
* This constructor won't throw an exception (apart from Errors)
*/
public AdapterTriple(Adapter adapter1, Adapter adapter2, Adapter adapter3) {
this.adapters = adapters = new Adapters[] {
adapter1, adapter2, adapter3};
}
/**
* @return an array of 3 adapters.
*/
public Adapter[] {
return adapters;
}
}
Таким образом, вы не можете обеспечить соблюдение ограничений на размер массива статически Ява. Вы должны делать это динамически, но вы можете предпринять шаги, чтобы сделать ошибки времени выполнения маловероятными.
Ваш вопрос непонятен. Вы хотите создать класс или метод? Пожалуйста, отредактируйте свой вопрос. – sleske
Тип возврата не является частью сигнатуры метода, что означает, что вы не можете принудительно ввести определенный тип возврата в суперклассу. –