gpt4 book ai didi

java - 自定义编译时错误

转载 作者:行者123 更新时间:2023-12-01 20:11:12 27 4
gpt4 key购买 nike

我想在调用方法时显示编译时错误。

就像我有一个类“MyClass”,其中有两个方法“methodA()”和“methodB()”。现在我创建了一个“MyClass”的实例。使用这个实例,我可以调用这两种方法,但如果我在“methodA()”之前调用“methodB()”,则需要显示编译时错误;强文本

class MyClasss
{
public void methodA()
{
//do some thing
}
public void methodB()
{
//do some thing
}
}
class MyRunningClasss
{
public static void main(String... args)
{
MyClass MC = new MyClass();

// it will not give any compile time error.
MC.methodA();
MC.methodB();

// but it have to give compile time error.
MC.methodB();
MC.methodA();

}

}

最佳答案

你的建议并不容易。您需要下载 OpenJDK 并进行更改。这是一个非常大的代码库,所以我不建议您这样做。

相反,我建议您添加运行时断言检查并对代码进行单元测试。如果您使用 maven 或 ant 来运行测试作为构建的一部分,这些错误将在构建时被检测到,即使是您的测试,而不是编译器检测到错误。

如果您可以执行许多在编译时难以确定的事情,那么是什么让编译器变得特别困难。

例如

public static somethingA(int n) {
// do something
if(n == x)
MC.methodA();
}

public static somethingB(int n) {
// do something
if(n == y)
MC.methodB();
}

// is this a compile error or not
for(int i=0;i<10;i++) {
somethingB(i);
somethingA(i);
}

有很多模式都可以使用这样的功能,但解决起来非常困难。例如确保在 Lock.lock() 之后使用 Lock.unlock(),但您可以将它们放在不同的方法中,或者对它们设置条件。

关于java - 自定义编译时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16662459/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com