gpt4 book ai didi

java - 实现类 : class to interface to interface 的接口(interface)

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:01 25 4
gpt4 key购买 nike

嗨,我是这方面的初学者,我正在尝试将一个类实现到一个接口(interface)。该接口(interface)扩展了另一个接口(interface)。我正在创建一个类,其中包含运行列表并对其进行干扰的方法,这两个接口(interface)是分开的。

这两个接口(interface)在各自的文件中,但所有内容都在同一个包中,希望这是正确的。

我收到以下错误:

来自 doublelinkedlist 类:此处应有接口(interface)

来自接口(interface)A:doublelinkedlist.A已经在doublelinkedlist中定义,这里需要接口(interface)

来自接口(interface) B:doublelinkedlist.B 已经在 doublelinkedlist 中定义

代码类:

package doublelinkedlist;

import java.util.*;

public class Doublelinkedlist<T> implements A<T>
{

代码接口(interface) A:(在名为 A.java 的单独文件中)

package doublelinkedlist;

import java.util.Iterator;


public class A<T> { // am I supposed to have a class here? or just have the interface?

public interface A<T> extends B<T>
{

代码接口(interface) B:(在名为 B.java 的单独文件中)

package doublelinkedlist;

public class B<T> {

public interface B<T> extends Iterable<T>
{

类中没有两个接口(interface)的代码,所以我不明白为什么我得到一个错误说它已经定义了。有人知道吗?

最佳答案

interface expected here表示编译器期望在 implements 之后有一个接口(interface),你已经给它一个类(因为 class A<T> 的声明排在第一位)。

doublelinkedlist.A is already defined in doublelinkedlist, interface expected here被抛出是因为你有一个名为 A 的类和一个名为 A 的类中的接口(interface),它们不能具有相同的名称(与 B 相同)

虽然从技术上讲,您可以在一个类中拥有一个接口(interface),但这并不是最好的设计(因为接口(interface)旨在抽象或隐藏底层类的细节,它们通常更可见),因此请尝试除非你有充分的理由,否则请避免这样做:)

这可能是您正在寻找的:

双链表.java:

package doublelinkedlist;

import java.util.*;

public class Doublelinkedlist<T> implements A<T>
{...}

A.java:

package doublelinkedlist;

import java.util.Iterator;

public interface A<T> extends B<T>
{...}

B.java:

package doublelinkedlist;

public interface B<T> extends Iterable<T>
{...}

进一步阅读接口(interface): http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html

关于java - 实现类 : class to interface to interface 的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19384298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com