有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java实现嵌入在接口中的类

假设我有一个接口,接口中嵌入了一个类(目的是该接口必须提供一个“类型”。该接口有一些使用该“类型”的方法。因此,在文件S.java中,我有

public interface S {
    public class SType
    {
    }

    public abstract void f( SType a ); 
}

我想在文件SS中实现这个接口,并尝试一下。爪哇:

public final class SS implements S
{
    public class SType extends java.util.HashSet<Integer>
    {
    }

    public void f( SType a )
    {
        // ...
    }
}

但是,当我尝试编译这些文件(“javac S.java SS.java”)时,我会收到一条常见的错误消息“SS不是抽象的,并且不会在S中重写抽象方法f(SType)”,这表明具体类中的“f()”不是接口中“f()”的正确实现。为什么?


共 (1) 个答案

  1. # 1 楼答案

    尝试:

    public final class SS implements S{
    
    
        public class SType extends java.util.HashSet<Integer>
        {
        }
    
        public void f(S.SType a) {
            // ..
        }
    }
    

    编辑:

    也许,你需要这样:

    public interface S<SType> {
        public void f( SType a ); 
    }
    
    public final class SS implements S<HashSet<Integer>> {
    
        public void f(HashSet<Integer> a ){
            // ...
        }
    }