【发布时间】:2014-02-18 23:46:38
【问题描述】:
我想尝试为方法分配“合同”或某种类型的基础,以保证从方法返回的数组长度始终具有x 长度。
在伪java中,这将是惊人的:
public String[4] someMethod() {...}
但是,这似乎在语法上不正确。我的想法是创建一个@interface 来保证这一点:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface ArrayLength {
public int size() default 0;
}
//...
@ArrayLength(size = 4)
public String[] someMethod() {...}
但这实际上只是目前的表面修复。有没有办法生成一个简单的方法来保证可能通过编译器/IDE警告的数组长度(不运行异常),或者这在java中目前是不可能的?
作为奖励,如果有办法通过 netbeans(我的 IDE)简单地生成警告,然后在编译时删除多余的警告,那就太好了。
【问题讨论】:
-
你想做什么?为什么/你怎么知道你的数组总是有 4 个元素?
-
在上面的例子中,对于那个特定的方法,返回的数组将代表某种类型的数据(如果你愿意的话,数据的“格式”)。
-
有什么理由不为大小为 4 的固定数组的返回类型创建一个类?
-
是的,创建一个新类来包装一个长度为 4 的字符串数组似乎有点矫枉过正,但不幸的是,这是首先想到的。
-
使用新类可能是正确的解决方案。如果这 4 个 String 元素代表了一些领域概念,那么一个新的类绝对是正确的解决方案。