以下是该方案:
我有一个程序,其中包含我在我的eclipse项目中构建的注释,它被称为'flag'。 'flag'注释具有'id'元素 我的类中有一个名为'connect'的方法,它建立了一个套接字连接。 我通过在它之前放置'flag'注释并给它一个'id'
来注释connect方法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
}
}
请允许我在此详述。我的目标是只能在编译时根据类的输入参数包含正确的'connect'方法。方法重载是一种类似的方法,虽然我不想更改方法签名。我也知道继承是一种方法。 Eclipse(这是正确的)抱怨我有上面的代码,说有一个重复的方法。无论如何,我可以在Eclipse 之前继续上面的 我编译程序,因为我将执行一些逻辑来删除除“连接”方法之外的所有方法<在之前 编译程序?有没有办法在eclipse中自动禁用自动编译?任何提示或指示都会有所帮助。
答案 0 :(得分:4)
将连接逻辑移动到单独的接口,然后使用工厂模式生成适当的连接:
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
}
如果类共享公共代码,则应考虑引入类似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();
}
}
在编译之前搞乱源代码并不是一个好主意恕我直言。