Je ne comprends pas pourquoi le code suivant ne fonctionne pas. J'essaie de créer un nouvel objet en utilisant des éléments d'objet existants, puis de traiter le nouvel objet pour changer ses éléments. À la fin les deux objets sont changés. Qu'est-ce que je fais mal?Création d'un nouvel objet à partir d'un objet existant, comment les rendre indépendants - java
contours = new ArrayList<MatOfPoint>();
hierarchy = new Mat();
//find contours of filtered image using openCV findContours function
Imgproc.findContours(mFilteredFrameNoHoles, contours, hierarchy , Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
//Aproximate contours
aproximatedContours = new ArrayList<MatOfPoint>(contours);
//aproximatedContours = (ArrayList<MatOfPoint>) contours.clone();
//aproximatedContours.addAll(contours);
aproximatedContours.doSomeOperations()
Mais comment puis-je créer un nouvel objet à partir de l'ancien et les rendre non liés les uns aux autres? Je veux traiter les deux objets séparément ... – Marek
Vous avez besoin d'une méthode de copie profonde personnalisée. Cela dit, ne comptez pas par défaut sur 'clone()' c'est une attraction! Il fait seulement une copie superficielle. Il faut toujours faire attention quand un objet avec état est partagé. – rocketboy
Pouvez-vous expliquer comment exactement dois-je faire une telle copie? Je n'ai aucune idée. – Marek