나는 프로젝트를 완료하려고 노력하고 있는데, 시도했지만, 나는 이것을 할 수 없다.Java에서 enum 복사 생성자를 사용하려면 어떻게해야합니까?
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);
}
가 지금은 주에 가서 같이 "의"라는 이름의 기호를 만들 수 있습니다 :
Symbols s = Symbols.CHERRY;
을하지만 문제 "S"의 복사본을 만드는 데있어를 사용하여 여기에 열거입니다 복사 생성자가 주어진 :
Symbols t = Symbols(s);
이 작업을 시도하면 오류가 발생합니다. "메서드 기호 (기호)가 유형 기호에 대해 정의되지 않았습니다."
감사합니다.
잘 정의한 경우 복사 생성자가 있습니다 (완료되었습니다). –
@MarkPeters하지만 컴파일러는 직접 호출하지 않으면 컴파일러가 * 사용하지 않습니다. 예를 들어 주어진 코드는 컴파일되지 않을 것이고't = s; '라고 쓰면 컴파일러는 자동으로 생성자를 호출하지 않을 것이다. 나는 복사 생성자라고 부르지 않는다. 그냥 생성자. – EJP
네가 맞아, 암묵적으로 (내가 C++과 같을 것처럼) 호출하는 문법이 있다는 점에서 복사 생성자가 아니다. 그러나 나는 여전히 자신의 클래스의 인스턴스를 "복사 생성자"로 취하는 생성자를 호출하는 것이 일반적이라고 생각한다. –