2016-10-29 2 views
0

추상화에 대한 이해를 높이고 문제가 발생했습니다. Java 일반 추상 메서드 매개 변수

내가 가지고있는 다음과 같은 클래스 :

추상 클래스 :

public abstract class Box { 
    abstract <T extends Mass> void putMassInBox(T mass); 
} 

구현 : 그것은 같은 SquareMass을 인식하지 못하기 때문에

public class CircleBox extends Box { 

    @Override 
    void putMassInBox(Mass mass) { 
     CircleMass circleMass = (CircleMass) mass; 
    } 

} 

가 한 아래, 오류가 발생합니다 미사, 또는 나는 그것을하는 부정확 한 방법을 말하고있다.

public interface Mass { 

} 

그리고 여기이 구현은 다음과 같습니다 :

public class CircleMass implements Mass { 

} 


public class SquareMass implements Mass { 

} 

그래서 나는 그것이 어떤 구현을 기반으로 매개 변수를 사용하는 방법을 강제 할

public class SquareBox extends Box { 

    @Override 
    void putMassInBox(SquareMass mass) { 
     // TODO Auto-generated method stub 

    } 

} 

다음은 질량 인터페이스입니다. 나는 원에서와 같이 질량을 던질 수 있다는 것을 안다. 예를 들어, 그것이 최선의 방법인지 궁금해하고 있었다. 다른 객체를 확장하는 객체를 사용하는 메서드를 강제로 수행 할 수 있습니까? 추가 작업을할만한 가치가 있거나 이런 종류의 추상화를 만드는 표준 방식을 사용하고 있습니다.

답변

3

당신은하지에있어서, 상기 클래스는 일반적인 확인해야합니다 :

public abstract class Box<T extends Mass> { 
    abstract void putMassInBox(T mass); 
} 

public class CircleBox extends Box<CircleMass> { 

    @Override 
    void putMassInBox(CircleMass mass) { 
    } 

} 
+0

이되지 않은 직관적 인 것 같다,하지만 작업을 수행하고,이 할 수있는 올바른 방법으로해야합니다 있도록, 담당자의 톤을 가지고 소지품. 고맙습니다! –