LTH*_*LTH 5 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);
}
Run Code Online (Sandbox Code Playgroud)
现在我可以进入 main 并创建一个名为“s”的符号,如下所示:
Symbols s = Symbols.CHERRY;
Run Code Online (Sandbox Code Playgroud)
但我在使用给定的复制构造函数制作“s”的副本时遇到问题:
Symbols t = Symbols(s);
Run Code Online (Sandbox Code Playgroud)
如果我尝试这样做,则会收到错误:“Symbols 类型的方法 Symbols(Symbols) 未定义。”
谢谢
好吧,你需要将其公开,但仍然行不通。Java 中没有复制构造函数;你不能“新建”一个枚举,这是下一个错误;无论如何,Java 都会竭尽全力确保每个 JVM 中每个枚举值只有一份副本。您认为需要复制构造函数到底有什么用?
解决方案:
Symbols s = Symbols.CHERRY;
Symbols t = s;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14022 次 |
| 最近记录: |