자바로 매핑 앱을 만들고 있는데 작은 오브젝트를 전달하는 것에 대한 질문이 있습니다. 윈도우가 직사각형으로 보여주고있는 영역을 나타내기를 원한다면 어떤 타일이 그 직사각형 안에 있는지를 알아보고로드 할 타일을 알고 싶습니다. C++에서는 Rect
구조체를 만들고 tileInRect
메서드를 포함 시켰을 것입니다. 자바에 가장 직접적인 번역은 같은 것입니다 :Java에서 작은 구조체를 대체해야하는 대상은 무엇입니까?
class Rect {
float x, y, width, height;
public boolean tileInRect(Tile t) {
// yada yada
}
}
class MyProgram {
public void main(String[] args) {
while (windowIsOpen()) {
// event loop
// render map
Rect r = getVisibleRect();
for (Tile t : tiles) {
if (r.tileInRect(t)) {
// etc.
}
}
}
}
}
을하지만 아마도이 될 새로운 사각형 모든 프레임 만들기 때문에 이것은 나에게 일종의 구역질을 느낀다. Java에서 이러한 가벼운 객체를 표현하는 더 나은 표준적인 방법이 있습니까? 나는 실제로 매개 변수 전달의 터무니없는 양처럼 보이기 때문에 tileInRect(Tile t, int rect_x, int rect_y, int ...
과 같은 도우미 메서드를 작성하고 싶지 않습니다. 감사!
클래스가 가장 좋습니다. 필요한 경우 컬렉션을 시도해보십시오. –
프레임간에 동일한 rect 인스턴스를 재사용하고 해당 필드를 업데이트 할 수도 있습니다. 어느 쪽이든 올바른 디자인입니다. – radai
새로운 직사각형을 만드는 것은 그렇게 비용이 많이 들지 않습니다. Java 코드는 중복되지 않습니다. JVM은 클래스의 인스턴스와 x, y 등에 필요한 저장소의 인스턴스를 추적하기 위해 일부 제어 구조 만 할당합니다. –