Java 向自定义对象数组添加方法

Java 向自定义对象数组添加方法,java,arrays,Java,Arrays,我正试图像这样在数组中添加一个方法 Position[]positions=新职位[10]; Position pos=positions.getPosAt(x,y); 我知道这可以通过以下方式实现: Position pos=getPosAt(位置,x,y) 但是我想知道是否有办法实现第一种方法。在Java中没有办法做到这一点。您可以创建自己的类,该类包含Position对象数组,并提供例如get方法,但无法向您不控制的类添加方法,包括所有数组类型。您可以为此创建一个类处理程序,如此Pos

我正试图像这样在
数组中添加一个方法

Position[]positions=新职位[10];
Position pos=positions.getPosAt(x,y);
我知道这可以通过以下方式实现:

Position pos=getPosAt(位置,x,y)

但是我想知道是否有办法实现第一种方法。

在Java中没有办法做到这一点。您可以创建自己的类,该类包含
Position
对象数组,并提供例如
get
方法,但无法向您不控制的类添加方法,包括所有数组类型。

您可以为此创建一个类处理程序,如此PositionArray类(根据需要命名):


不,不是在java中。或者,您可以创建一个类(包装器),其中包含
位置
,并在其中实现该方法。但是,同样,这只是Java中无法解决的问题的一种替代方法。我真的很难理解你的问题,因为你似乎以一种完全出乎意料和不同寻常的方式混合数组和类。
public class Test {

        public static void main(String... args) {

            Position[] positions = new Position[10];

            positions[0] = new Position(5, 10);
            positions[1] = new Position(11, 18);
            positions[2] = new Position(20, 7);

            PositionArray pa = new PositionArray(positions);

            System.out.println(pa.getPosAt(5, 10)); // Position{x=5, y=10}

        }
    }

    class PositionArray {

        private Position[] positions;

        public PositionArray(Position[] positions) {
            this.positions = positions;
        }

        public Position getPosAt(int x, int y) {

            for (Position p : positions) {
                if (!Objects.isNull(p)) {
                    System.out.println(p.getX() + " " + p.getY());
                    if (p.getX() == x && p.getY() == y) {
                        return p;
                    }
                }
            }
            return null;
        }
    }

    class Position {

        private final int x;
        private final int y;

        public Position(int x, int y) {
            this.x = x;
            this.y = y;
        }

        public int getX() {
            return x;
        }

        public int getY() {
            return y;
        }

        @Override
        public String toString() {
            return "Position{" + "x=" + x + ", y=" + y + '}';
        }

    }