Java 处理错误:预期为“0”;“类”;,发现';设置';实现中的接口方法

Java 处理错误:预期为“0”;“类”;,发现';设置';实现中的接口方法,java,processing,Java,Processing,我有以下实体组件系统接口来表示系统(在ECSSystem.java中): 对于行final Set,请尝试发布[mcve],而不是断开连接的代码段。您发布的代码包含一系列错误,因为您没有包含我们需要的所有类。但与其简单地添加这些类,不如尝试将问题缩小到尽可能少的行。正如Eran所说,您应该真正远离已经在使用的类名 下面是我尝试绕过您没有提供的类,只使用Object。这很好: import java.util.Set; import java.util.HashSet; import java.a

我有以下实体组件系统接口来表示系统(在
ECSSystem.java
中):


对于行
final Set,请尝试发布[mcve],而不是断开连接的代码段。您发布的代码包含一系列错误,因为您没有包含我们需要的所有类。但与其简单地添加这些类,不如尝试将问题缩小到尽可能少的行。正如Eran所说,您应该真正远离已经在使用的类名

下面是我尝试绕过您没有提供的类,只使用
Object
。这很好:

import java.util.Set;
import java.util.HashSet;
import java.awt.Component;

void draw(){

}

public interface System{
  public void accept(Set<Object> entities);
  public Set<Class<? extends Component>> required();
}

class PlayerInputSystem implements System {
  public void accept(Set<Object> entities) {
    // implementation here
  }

  public Set<Class<? extends Component>> required() {
    final Set<Class<? extends Component>> reqs = new HashSet<>();
    // implementation here
    return reqs;
  }
}
import java.util.Set;
导入java.util.HashSet;
导入java.awt.Component;
作废提款(){
}
公共接口系统{
公共无效接受(集合实体);

公共设置请尝试发布[mcve]而不是断开连接的代码段。您发布的代码包含大量错误,因为您没有包含我们需要的所有类。但是,与其简单地添加这些类,不如尝试将问题缩小到尽可能少的行。正如Eran所说,您应该真正远离已经使用的类名

以下是我尝试绕过您没有提供的类,只使用
Object
。这可以很好地编译:

import java.util.Set;
import java.util.HashSet;
import java.awt.Component;

void draw(){

}

public interface System{
  public void accept(Set<Object> entities);
  public Set<Class<? extends Component>> required();
}

class PlayerInputSystem implements System {
  public void accept(Set<Object> entities) {
    // implementation here
  }

  public Set<Class<? extends Component>> required() {
    final Set<Class<? extends Component>> reqs = new HashSet<>();
    // implementation here
    return reqs;
  }
}
import java.util.Set;
导入java.util.HashSet;
导入java.awt.Component;
作废提款(){
}
公共接口系统{
公共无效接受(集合实体);

public set是否确实要在界面中使用名称
System
?您将不得不放弃一些非常常用的方法,例如
System.out.println
(除非您编写
java.lang.System.out.println
)@Eran没有想到这一点,是的,这肯定是需要改变的,谢谢。您可以在eclipse中使用处理,并使用支持处理和菱形运算符的JDK。您确定要在界面中使用名称
System
?您将不得不放弃一些非常常用的方法,例如
System.out.println
(除非您编写
java.lang.System.out.println
).@Eran没有想到,是的,这肯定是需要改变的,谢谢。你可以在eclipse中使用处理,使用支持处理和菱形运算符的JDK。我编辑了我的问题,但仍然失败,并显示了相同的错误消息。@BillyBrown在我回答的底部看到了编辑。我编辑了我的问题,但仍然失败他收到了相同的错误消息。@BillyBrown看到了我答案底部的编辑。
expecting "class", found 'Set'
import java.util.function.Consumer;
import java.util.HashSet;
import java.util.Set;

void setup() {

}

void draw() {

}

interface Component {

}

class Entity {

}

interface ECSSystem extends Consumer<Set<Entity>> {
  public void accept(Set<Entity> entities);
  public Set<Class<? extends Component>> required();
}

class PlayerInputSystem implements ECSSystem {
  public void accept(Set<Entity> entities) {

  }

  public Set<Class<? extends Component>> required() {
    final Set<Class<? extends Component>> reqs = new HashSet<>(); // error here
    return reqs;
  }
}
unexpected token: ?
import java.util.Set;
import java.util.HashSet;
import java.awt.Component;

void draw(){

}

public interface System{
  public void accept(Set<Object> entities);
  public Set<Class<? extends Component>> required();
}

class PlayerInputSystem implements System {
  public void accept(Set<Object> entities) {
    // implementation here
  }

  public Set<Class<? extends Component>> required() {
    final Set<Class<? extends Component>> reqs = new HashSet<>();
    // implementation here
    return reqs;
  }
}
final Set<Class<? extends Component>> reqs = new HashSet<>();