Java와 관련된 다운 캐스팅 문제가 있습니다.
플롯은 다음과 같습니다. 클래스 MyPicture
는 추상 클래스를 확장합니다 BufferedImage
. 요점은에 몇 가지 방법을 추가하는 것 BufferedImage
입니다. 그런 다음 MyWindow
사용자 친화적 인 창을 설정하는 클래스 가 있습니다. 이 수업에서는에서 그림을로드하고에서 MyPic
복사하고 on 및 finally show 및 별도의 창 MyPic_filtered
에서 사용하는 방법을 사용 하고 싶습니다 (하지만이 마지막 부분은 괜찮습니다 ^^). 및에 어떤 유형을 사용해야하는지 모르겠습니다 . 올바른 유형으로 캐스트를 시도했지만 빌드되었지만 실행되지 않습니다.MyPicture
MyPic_filtered
MyPic
MyPic_filtered
MyPic
MyPic_filtered
다음은 코드입니다.
//Loading the picture
BufferedImage MyPic = ImageIO.read(new File(URL)); //URL is a string
//Copy the picture
MyPicture myPic_filtered = myPic;
//Use the method from MyPicture
myPic_filtered.method_from_MyPicture();`
누군가 제발 도와 줄 수 있습니까?
기본 클래스 인스턴스를 확장 인스턴스에 전달하려고 할 때 다음과 같이 캐스터를 추가 할 수 있습니다.
MyPicture myPic_filtered = (MyPicture)myPic;
그런 다음 이 키워드 를 사용하여 "myPic"에 액세스 할 수 있습니다 .
또는 BufferedImage를 확장 할 필요가 없습니다. bufferedImage를 다음과 같이 인스턴스 변수로 처리하면됩니다.
class MyPicture {
BufferedImage bi;
//other variables
......;
public MyPicture(BufferedImage input) {
this.bi = input;
}
public BufferedImage method_from_MyPicture() {
//Do something with bi and output
........
}
}
어떤 구조가 더 나은지 확실하지 않습니다. 그러나 어느 쪽이든 문제를 해결합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다