Java EclipseSuperss编译器错误-有可能的解决方法吗?
以下是场景: 我有一个程序,其中包含一个我在eclipse项目中构建的注释,称为“flag”。 “flag”批注具有“id”元素 我的类中有一个名为“connect”的方法,用于建立套接字连接。 我通过在connect方法之前放置'flag'注释并给它一个'id'来对其进行注释Java EclipseSuperss编译器错误-有可能的解决方法吗?,java,eclipse,annotations,Java,Eclipse,Annotations,以下是场景: 我有一个程序,其中包含一个我在eclipse项目中构建的注释,称为“flag”。 “flag”批注具有“id”元素 我的类中有一个名为“connect”的方法,用于建立套接字连接。 我通过在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...
}
}
现在,我最终想要的是以下内容
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中继续执行上述操作,因为在编译程序之前,我将执行一些逻辑,除去除一个之外的所有“connect”方法?有没有办法在eclipse中自动禁用自动编译?任何提示或指针都会有帮助 将连接逻辑移动到单独的接口,然后使用factory模式生成适当的连接:
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< /Cord>>
工厂可能会这样: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();
}
}
公共最终类工厂{
公共ifoocreate(){
if(Connection.speed<100)//虚拟值
返回新的SlowFoo();
if(Connection.speed<1000)//虚拟值
返回新的MediumFoo();
返回新的FastFoo();
}
}
编译前乱搞源代码不是一个好主意。将连接逻辑移动到单独的接口,然后使用工厂模式生成适当的连接:
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< /Cord>>
工厂可能会这样: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();
}
}
公共最终类工厂{
公共ifoocreate(){
if(Connection.speed<100)//虚拟值
返回新的SlowFoo();
if(Connection.speed<1000)//虚拟值
返回新的MediumFoo();
返回新的FastFoo();
}
}
在编译之前乱搞源代码不是一个好主意。这里不需要注释。根据答案,这可以在纯Java中完成。如果您希望在编译时使用依赖项注入而不是工厂(请参见下面的答案),并使用属性文件指定要注入的连接类型。@Tnem您能详细说明一下吗?这里不需要注释。根据答案,这可以在纯Java中完成。如果您希望在编译时使用依赖项注入而不是工厂(请参见下面的答案),并使用属性文件指定要注入的连接类型。@Tnem您能详细说明一下吗?好文章,我喜欢这个示例。然而,我希望看看我是否能用我现有的方法工作。是否可以在eclipse中禁用自动编译,以便在编写代码时,在请求代码编译之前不会出现错误?您可以尝试设置“Window-Preferences-Java-Editor-Report problems as you type”。但是,我仍然不建议您因为这种难看的语法而放弃整个项目的语法检查。只要编写Java并利用它提供的可能性:-)我想这就是我需要的。该设置将禁用错误,直到用户点击保存。谢谢你的帮助好帖子,我喜欢这个例子。然而,我希望看看我是否能用我现有的方法工作。是否可以在eclipse中禁用自动编译,以便在编写代码时,在请求代码编译之前不会出现错误?您可以尝试设置“Window-Preferences-Java-Editor-Report problems as you type”。但是,我仍然不建议您因为这种难看的语法而放弃整个项目的语法检查。只要编写Java并利用它提供的可能性:-)我想这就是我需要的。该设置将禁用错误,直到用户点击保存。谢谢你的帮助