我想一种难以置信的怪异方法是创建一个无参数方法并将其标记为已弃用。然后使用以下两个标志进行编译:
-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));
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)