我在第12_01部分.藏身处.我关心的方法:公共T takeFromHideout(),我知道如何做到这一点,但我想知道是否有一个更好的方法. 我的 idea 是通过创建新的对象来"复制"对象,删除第一个对象并返回它的副本. 有没有一种方法可以返回并删除对象,而不会产生这种"垃圾"副本?

练习:

实现一个名为HhideOut的类,该类具有单个泛型类型 参数.从类创建的对象只能隐藏一个对象 一次来一次.该类应提供无参数构造函数,如下所示 以及以下三种方法:

PUBLIC VALID putIntoHideout(T ToHide)将类型为 根据指定给类的类型参数,将 藏身之处.如果某个对象已经在隐藏中,它将 消失吧.

public T takeFromHideout() takes out the object with a type in accordance with the type parameter given to the the class from the hideout. In case there is nothing in the hideout, we return null. Calling the method returns the object in the hideout and removes the object from the hideout.

公共布尔值isInHideout()如果存在 藏身之处的物体.以防藏身之处没有任何物体, 它应该返回值FALSE.

带复制对象的代码.

public class Hideout<T> {

    private T object;

    public void putIntoHideout(T toHide) {
        this.object = toHide;
    }

    public T takeFromHideout() {
        T copy = this.object;
        this.object = null;
        return copy;
    }

    public boolean isInHideout() {
        return this.object != null;
    }
}

推荐答案

不,您的实现是正确的.由于您需要返回对象并将其从隐藏位置移除,因此复制它、移除它并随后将副本与您的

    public T takeFromHideout() {
        T copy = this.object;
        this.object = null;
        return copy;
    }

Java相关问答推荐

ActivityCompat.请求收件箱自动拒绝权限

当切换javaFX场景时,stage的大小正在Minimize

Java Stream,需要更新列表对象列表

工件部署期间出错[Tomcat 8.5.45]

使用java访问具体子类特定方法的最佳方法是什么?

将数组整体转换为链接表

无法初始化JPA实体管理器工厂:无法确定为Java类型<;类>;推荐的JdbcType

如何使用SpringBoot中的可分页对整数作为字符串存储在数据库中时进行排序

与Spring Boot相关的实体未正确保存

try 判断可选参数是否为空时出现空类型安全警告

生成桥方法以解决具有相同擦除的冲突方法

与不同顺序的组进行匹配,不重复组但分开

在一行中检索字符分隔字符串的第n个值

为什么这种递归会有这样的行为?

在ECLIPSE上的M1 Pro上运行JavaFX的问题

模拟JUnit未检测到返回字符串的方法的任何声纳覆盖

如何通过用户ID向用户发送私信

Java返回生成器的实现

如何以事务方式向ibmmq发送消息

从 Java 17 切换回 Java 8 后出现的问题