在下面的简单示例中,创建了一个界面,其中包含方法和参数名称栏。
以下实现通过指定zoo来巧妙地合法地改变了这一点。
public class Query {
public interface MyInterface {
public void foo(int bar);
}
public class Thing implements MyInterface {
@Override
public void foo(int zoo) { }
}
public Query() { }
public static void main(String[] args) { }
}
如何强制参数名称符合 MyInterface
中指定的内容(bar
不是 zoo
)?
理想情况下,我正在寻找一个编译器选项或类似的选项,它会引发警告或错误。
最佳答案
在编译器级别(例如 javac)- 你不能,method signature仅根据方法名称和参数类型创建,因此名称和返回类型基本上被忽略
您唯一能做的就是为 SonarQube 等工具编写自己的语法规则,但据我了解,它不适合您。
似乎您想创建一些库[代码序列化?]并强制用户使用正确的参数命名 - 这意味着您还需要强制他使用特定工具
关于java - 强制参数名称一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57171436/