2 votes

Ajout de méthodes aux tableaux d'objets personnalisés

J'essaie d'ajouter une méthode à un fichier array comme ça.

    Position[] positions = new Position[10];
    Position pos = positions.getPosAt(x, y);

Je sais que cela peut être accompli comme :

   Position pos = getPosAt(positions, x, y)

Mais j'aimerais savoir s'il existe un moyen de réaliser la première méthode.

3voto

Jeremy Then Points 384

Vous pouvez créer un gestionnaire de classe pour cela, comme cette classe PositionArray (nommez-la comme vous le souhaitez) :

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 + '}';
        }

    }

1voto

Louis Wasserman Points 67557

Il n'y a aucun moyen de faire cela en Java. Vous pourriez éventuellement créer votre propre classe qui contiendrait un tableau de Position et fournit par exemple get mais il n'y a aucun moyen d'ajouter des méthodes aux classes que vous ne contrôlez pas, y compris tous les types de tableaux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X