Tengo 3 archivos fuente de Java.
Person.javaFriendsList.javaMyFriends.java FriendsList contiene una lista de matriz de objetos de tipo Person y un método para agregar un nuevo amigo a la lista.
public class FriendsList{ ArrayList<Person> friendsList = new ArrayList<Person>(100); // Constructor declaration of class public FriendsList(ArrayList<Person> friendsList){ super(); this.friendsList = friendsList; } ... public void addFriend(Person friend){ friendsList.add(friend); } ... } Ahora, en MyFriends.java creé una nueva lista de matriz de objetos de tipo Person , declaré una nueva Person y estoy tratando de agregarla a la lista usando el método addFriend(Person) pero recibo un error "Method addFriend(Person) is undefined for the type ArrayList<Person>"
public class MyFriends{ public void main(String[] args){ ArrayList<Person> friendsList = new ArrayList<Person>(100); Person f1 = new Person("Alice", "Anderson", "519-472-4910", "02", "19"); friendsList.addFriend(f1); } } Probé todos los demás métodos definidos en FriendsList.java pero recibo el mismo mensaje de error. Entiendo que si los archivos de origen están en la misma carpeta, la sintaxis para usar un método del otro archivo es objectName.method(a) .
¿Qué estoy haciendo mal?
(Perdón si no estoy preguntando bien, es mi primera pregunta)
Supongo que quieres hacer lo siguiente en su lugar:
public class MyFriends{ public void main(String[] args){ FriendsList friendsList = new FriendsList(); Person f1 = new Person("Alice", "Anderson", "519-472-4910", "02", "19"); friendsList.addFriend(f1); } } Estaba creando una instancia de ArrayList<Person> pero lo que realmente quiere es crear un objeto de su propia clase FriendsList .
Parece que no tiene un constructor sin argumentos en su FriendsList , por lo que debe hacer lo siguiente (crear una instancia de List of Person ):
public class MyFriends{ public void main(String[] args){ FriendsList friendsList = new FriendsList(new ArrayList<Person>(100)); Person f1 = new Person("Alice", "Anderson", "519-472-4910", "02", "19"); friendsList.addFriend(f1); } } Aún así, en mi opinión, debería considerar agregar un constructor sin argumentos a su lista de FriendsList de la siguiente manera para que mi primera sugerencia realmente funcione ( gracias @DavidConrad por las sugerencias ):
public class FriendsList{ ArrayList<Person> friendsList = new ArrayList<Person>(100); // Constructor declaration of class public FriendsList() { } public FriendsList(ArrayList<Person> friendsList){ this.friendsList.addAll(friendsList); } ... public void addFriend(Person friend){ friendsList.add(friend); } ... }En realidad, no está utilizando la clase FriendsList . Mis amigos deben ser:
public class MyFriends{ public void main(String[] args){ FriendsList friendsList = new FriendsList(); Person f1 = new Person("Alice", "Anderson", "519-472-4910", "02", "19"); friendsList.addFriend(f1); } }