Как гласит заголовок, можно ли использовать очень простой вложенный класс в качестве держателя данных, чтобы действовать как структура, существующая в других языках программирования?
Например, представьте, что мне нужен метод чтобы вернуть более одного значения, можно ли использовать этот очень простой вложенный класс для этой цели? Или это плохая практика?
В качестве примера представьте сценарий, в котором вы должны нарисовать фигуру, используя абсолютные координаты (слева, сверху, справа, снизу), и что для получения координат x и y щелкнули по экран, но вместо того, чтобы начать рисовать фигуру в этих координатах, нам нужно сместить их, чтобы нарисовать фигуру в центре этих координат, как показано в этом примере:
public class DrawSquare {
private class Positions {
public int left;
public int top;
public int right;
public int bottom;
}
//* These classes may not exist in java.
//* They're here just to exemplify functionality.
private Rectangle mSquare;
private Paint mPaint;
private Screen mScreen;
private final int SIDE_LENGTH;
public DrawSquare(int sideLength) {
SIDE_LENGTH = sideLength;
mSquare = new Rectangle();
}
//* Creates a square where the screen was clicked.
public void createSquare() {
Positions pos = processCoords(
mScreen.getClickedX(),
mScreen.getClickedY());
//* Because the coords were processed, this rectangle
//* will be created in the center of the clicked coords.
mSquare.set(pos.left, pos.top, pos.right, pos.bottom);
mPaint.draw(mSquare, mScreen);
}
//* Moves the square
public void moveSquare() {
Positions pos = processCoords(
mScreen.getClickedX(),
mScreen.getClickedY());
//* Because the coords were processed, this rectangle
//* will be moved to the center of the clicked coords.
mPaint.animate(mSquare, mScreen)
.moveTo(pos.left, pos.top, pos.right, pos.bottom)
.setDuration(500)
.start();
}
//* offset the coords to get a centered square
private Positions processCoords(int x, int y) {
Positions pos = new Positions();
int halfLength = SIDE_LENGTH / 2;
pos.left = x - halfLength;
pos.top = y - halfLength;
pos.right = x + halfLength;
pos.bottom = y + halfLength;
return pos;
}
}
Это только что составлено типы объектов для иллюстрации сценария, который я изложил выше.
Это хороший вариант использования вложенного класса?