배열 목록의 객체를 비교하고 가장 큰 것을 반환하는 제네릭 클래스를 만들려고합니다. 제 문제는 제네릭이 어떻게 작동하는지 완전히 이해하고 있는지 잘 모르겠습니다.ArrayList의 객체를 비교하는 일반 사항
측정 :
import java.util.ArrayList;
/**
Describes any class whose objects can be measured.
*/
public abstract class Measurable<T>{
abstract double getMeasure();
public static <T extends Measurable<T>> T getLargest(ArrayList<T> objects){
T largest = objects.get(0);
for(int i = 0; i < objects.size(); i ++){
if(largest.getMeasure() == objects.get(i).getMeasure()){
largest = objects.get(i);
}
}
return largest;
}
}
상자 : 나는 (그것을 측정 유형의 방법 getLargest (ArrayList에)가 인수 적용 할 수 없습니다 "라는 문제를 가로 질러 간다
import java.awt.Rectangle;
import java.util.ArrayList;
public class Box extends Measurable {
private Rectangle box;
private static ArrayList<Rectangle> rectangles;
public Box(){
box = new Rectangle();
rectangles = new ArrayList<Rectangle>();
}
public ArrayList<Rectangle> create(){
for(int i = 0; i < 10; i++){
box = new Rectangle((int) Math.random(), (int) Math.random());
rectangles.add(box);
}
return rectangles;
}
@Override
public double getMeasure() {
double area = 0;
for(int i = 0; i < rectangles.size(); i++){
area = rectangles.get(i).getWidth()*rectangles.get(i).getHeight();
}
return area;
}
public static void main(String[] args){
Box b = new Box();
b.getLargest(b.create());
}
}
ArrayList) "하지만 getLargest 클래스에 대한 객체를 사용할 수 없어야합니까?
당신이'ArrayList'는 측정 클래스를 확장 객체를 포함하는 것으로 예상,'Rectangle'는 – hoaz
왜'Measureable'는 형식 매개 변수'T'가 않습니다를 확장하지 않는 이유는 무엇입니까? 그것은 클래스 정의에서 어디에도 사용되지 않는 것 같습니다. – newacct