需要Java变量参数列表中的至少一个元素

需要Java变量参数列表中的至少一个元素,第1张

需要Java变量参数列表中的至少一个元素

我想一种难以置信的怪异方法是创建一个无参数方法并将其标记为已弃用。然后使用以下两个标志进行编译:

-Xlint:deprecation-Werror
。这将导致任何不赞成使用的方法的使用都是编译时错误。

编辑(最初答案后很长时间):

较不客气的解决方案是抛弃

MyClass(Integer... numbers)
构造函数并替换为
MyClass(Integer[]numbers)
(并添加私有的无参数构造函数)。它使编译器无法隐式使用超类构造函数,但没有任何参数,并为您提供了编译时错误消息。

./some_package/Child.java:7: error: constructor Parent in class Parent cannot be applied to given types;    public Child(Integer[] args) {^  required: Integer[]  found: no arguments  reason: actual and formal argument lists differ in length

代价是您的调用语法将变得更加冗长:

new Child(new Integer[] {1, 2, 3});

当然,您可以编写一个辅助函数来帮助解决此问题。

public static Child newInstance(Integer... numbers) {    return new Child(numbers);}@SafeVarargspublic static <T> T[] array(T... items) {    return items;}

然后:

Child c0 = Child.newInstance(1, 2, 3);Child c1 = new Child(array(1, 2, 3));


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5561757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存