Java:如何使接口类型互连?

时间:2015-04-13 16:25:22

标签: java

如何将I接口Parser的{​​{1}}连接到validate方法参数类型?

public interface Parser<R, I> {
    R parse(I... input);

    interface Validator {
        boolean validate(I... content);
    }
}

现在,我收到一个错误:

`my.pack.Parser this`: cannot be referenced from a static context

UPD

如果我向Validator界面添加<I>类型,我仍然没有类型关系。

Parser<String, String> p = new Parser<String, String>() {
    @Override
    public String parse(String... input) {
        Validator<Integer> v = new Validator<Integer>() {
            @Override
            public boolean validate(Integer... content) {
                return false;
            }
        };
        return null;
    }
};

在我的示例中,Validator的类型应与Parser中的相同 - String,而不是Integer

1 个答案:

答案 0 :(得分:1)

您必须将类型I指定为Validator接口的通用参数,因为内部接口始终是静态的,因此Validator无法访问未为接口Parser定义的I,但仅在您实例化它时。