2

我见过的大多数遇到这个问题的人都=在他们需要的地方使用==。是什么导致了我的问题?

com\callmeyer\jopp\FieldCoordinator.java:303:意外类型
必需:类、包
发现:变量
                    if (event.getType() == event.Type.INSERT) {
                                           ^

枚举定义和访问器:

public class DataLayoutEvent {
    public static enum Type { INSERT, DELETE, RENAME, MOVE, RESIZE }

    private Type type = null;

    public Type getType() {
        return type;
    }

    ...
}

以及发生错误的方法:

public void layoutChanged(DataLayoutEvent event) {
    if (event.getType() == event.Type.INSERT) {
        fieldAdded(event.getField(), event.getToIndex());
    }

    ...
4

3 回答 3

4

使用静态访问而不是实例访问:

if (event.getType() == DataLayoutEvent.Type.INSERT) {

您可以(但不应该)对静态成员(方法和字段)使用实例访问,但不能对内部类型使用。

于 2011-09-02T16:23:44.940 回答
3

它应该只是:

// From within DataLayoutEvent
if (event.getType() == Type.INSERT) {

或者

// From other classes
if (event.getType() == DataLayoutEvent.Type.INSERT) {

Type部分是类型的名称 - 它不能由变量值 ( event) 限定。DataLayoutEvent.Type顺便说一句,如果您想使用其他地方的第一个表单,您可以导入。

于 2011-09-02T16:23:15.950 回答
1

我认为您需要以Type不同的方式引用:

if (event.getType() == DataLayoutEvent.Type.INSERT) { ... }
于 2011-09-02T16:24:51.070 回答