java - 对象类、java API

标签 java interface queue overriding abstract

当我实现 Queue 接口(interface)时,它要求我实现该接口(interface)中的所有抽象方法。但是,某些方法具有对象类型的输入变量。它指的是什么?是否可以将其更改为 String 类型或 java 中的任何其他原始类型?因为,例如,在这个抽象方法中:

import java.util.Collection;
import java.util.Iterator;
import java.util.Queue;

public class MyQueue implements Queue {
  
  @Override
    public boolean add(Object e) {
        throw new UnsupportedOperationException("Not supported yet."); /*Inserts the specified 
        element into this queue if it is possible to do so immediately without violating 
        capacity restrictions, returning true upon success and throwing an IllegalStateException
        if no space is currently available.
        */
    }
  
  }

当我开始实现这个方法来制作自己的 Queue 类,其输入为 String 类型而不是 Object 类型时,它告诉我再次实现原始的抽象方法!正如您在以下片段中看到的:

@Override
public boolean add(String name) {
    boolean result = true;

    if (rear == maxSize - 1) {
        result = false;
        throw new IllegalStateException("There is No Enough Space.");
    } else {
        names[++rear] = name;
        front = 0;
    }

    return result;
}

最佳答案

Queue<E>是一个通用接口(interface)。这意味着它有一个类型参数 E .

如果你写

class MyQueue<E> implements Queue<E> {
    ...
}

那么您将需要覆盖 add(E e) ,不是add(Object e) 。这可能是你应该写的。

如果你写

class MyStringQueue implements Queue<String> {
    ...
}

那么您将需要覆盖 add(String e) 。如果您的实现仅适用于 String,那么您应该编写以下内容s。

如果你只是写

class MyQueue implements Queue {
    ...
}

那么你将被迫覆盖add(Object e) 。但是,您不应该使用原始类型 Queue没有类型参数。

最简单的实现方式Queue就是让你的类(class)延伸AbstractQueue<E>因为这样大部分艰苦的工作都会为你完成。

关于java - 对象类、java API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29381089/

相关文章:

multithreading - Python 多处理队列慢

java - C/C++ 与 Java 中的垃圾收集

java - ICS (iCalendar) UID 目的和使用

java - 匿名内部类中的接口(interface)是如何工作的?

java - Java 处理链中的作业排队

c - glibc 检测到 realloc() : invalid next size: 0x

java - Maven 安装成功,但 jar 无法从 bash (CLI) 正常工作

java - Play 框架占用磁盘空间

包含泛型接口(interface)实现实例的 Java 泛型类

wcf - DbContext、EF 和 LINQ - 通过接口(interface)在 DbContext 上公开方法的最佳方式是什么?