gpt4 book ai didi

java - Eclipse 抑制编译器错误 - 是否有可能的解决方法?

转载 作者:行者123 更新时间:2023-12-01 19:16:29 25 4
gpt4 key购买 nike

这是场景:

我有一个程序,其中包含我在 Eclipse 项目中构建的注释,它称为“标志”。“flag”注释有一个“id”元素我的类中有一个名为“connect”的方法,用于建立套接字连接。我通过在连接方法前面放置“flag”注释并为其指定“id”来对其进行注释

public class Foo {
@flag(id = 'slowConnection')
public boolean connect() {
// connect logic here...
}
}

现在,我最终想要的是如下内容

public class Foo {
@flag(id = 'slowConnection')
public boolean connect() {
// connect logic here...
}

@flag(id = 'mediumConnection')
public boolean connect() {
// medium connection logic here
}

@flag(id = 'fastConnection')
public boolean connect() {
// fast connection logic here
}
}

请允许我在这里详细说明一下。我的目标是能够在编译时根据类的输入参数仅包含正确的“连接”方法。方法重载是一种类似的方法,尽管我不想更改方法签名。我也知道继承是实现这一目标的一种方法。当我有上面的代码时,Eclipse(没错)会提示,说有一个重复的方法。无论如何,我可以在编译程序之前在 Eclipse 中继续执行上述操作,因为我将执行一些逻辑来删除除“连接”方法之一之外的所有方法< strong>程序编译之前?有没有办法在eclipse中自动禁用自动编译?任何提示或指示都会有帮助。

最佳答案

您将连接逻辑移至单独的接口(interface),然后使用工厂模式生成适当的连接:

public interface IFoo {
void connect();
}

final class SlowFoo implements IFoo {
//Implementation for slow connections
}

final class MediumFoo implements IFoo {
//Implementation for medium connections
}

final class FastFoo implements IFoo {
//Implementation for fast connections
}

如果这些类共享公共(public)代码,您应该考虑引入一个基类,例如 FooBase

工厂可能看起来像这样:

public final class FooFactory {
public IFoo create() {
if (Connection.speed < 100) //Fictive value
return new SlowFoo();
if (Connection.speed < 1000) //Fictive value
return new MediumFoo();

return new FastFoo();
}
}

在编译之前搞乱源代码并不是一个好主意。

关于java - Eclipse 抑制编译器错误 - 是否有可能的解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6439247/

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