java - 如何在 Java 中使用枚举复制构造函数?

标签 java enums copy copy-constructor

我正在尝试完成一个项目,尽管我已经尝试过了,但我似乎做不到。这是枚举:

public enum Symbols {
    /**
     * The Seven
     */
    SEVEN(12,"images/seven.jpg"),
    /**
     * The Watermelon
     */
    WATERMELON(10,"images/watermelon.jpg"),
    /**
     * The Orange
     */
    ORANGE(8,"images/orange.jpg"),
    /**
     * The Plum
     */
    PLUM(6,"images/plum.jpg"),
    /**
     * The Lemon
     */
    LEMON(4,"images/lemon.jpg"),
    /**
     * The Cherry
     */
    CHERRY(2,"images/cherry.jpg");

    private int payout;             // Symbol payout value
    private BufferedImage image;    // Symbol image
    private String icon;            // Symbol file name

    /** Constructor - Payout must be positive and even, file name must not be null
     * @param payout - Symbol payout amount
     * @param icon - Symbol image file name
     */
    Symbols(int payout, String icon){
        this.payout = payout;
        this.icon = icon;
        loadImage(icon);
    }

    /** Copy Constructor - Symbol must not be null
     * @param s - A single symbol
     */
    Symbols(Symbols s){
        payout = s.payout;
        icon = s.icon;
        loadImage(icon);
    }

现在我可以进入 main 并创建一个名为“s”的符号,如下所示:

Symbols s = Symbols.CHERRY;

但是我在使用给定的复制构造函数制作“s”的副本时遇到了问题:

Symbols t = Symbols(s);

如果我尝试这样做,我会收到错误消息:“未定义 Symbols 类型的方法 Symbols(Symbols)。”

谢谢

最佳答案

好吧,您需要将其公开,但它仍然行不通。 Java 中没有复制构造函数;你不能“新建”一个枚举,这是下一个错误;在任何情况下,Java 都会竭尽全力确保每个 JVM 的每个枚举值只有一个副本。您认为您需要复制构造函数的具体目的是什么?

解决方法:

Symbols s = Symbols.CHERRY;
Symbols t = s;

关于java - 如何在 Java 中使用枚举复制构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7898390/

相关文章:

java - OnClick 在编辑 toastview 并返回时崩溃

java - 如何解决paho mqtt客户端的异步连接问题?

c++ - 枚举尚未声明

c - C语言中 'enum'的值是如何存储的?

java - 如何重用枚举中现有的实现

iphone - 为什么 XCode 每次都会将资源复制到 iDevice,即使它们仍未更改?

java - Android java 应用程序适用于一个版本但不适用于下一个版本

java - 列表项 = new ArrayList() : it does not work

linux - 将 Linux 分区克隆到外部硬盘

C++ 复制构造函数导致代码无法编译 (gcc)