Le strutture dati non vanno fatte così, un conto è il tipo dei dati e un conto è quello che ci fa internamente la struttura, come/dove li incapsula ecc...; se vuoi fare una lista di interi, i metodi della tua classe Lista dovrebbero avere solo parametri di tipo intero, non "nodi".
L'utilizzatore della tua struttura non dovrebbe avere a che fare con i nodi, infatti io preferirei un approcio del genere:

codice:
class SinglyLinkedList {

	private class Node {
    
		int info;
		Node next;

		Node(int info, Node next) {
			// costruttore...
		}

	}

	Node head = null;

	void add(int element) {
		// codice per l'aggiunta
	}

	// costruttore ed altri metodi...

}
Insomma, dovresti implementare un'interfaccia del genere:

codice:
interface IntegerList {
	
	void add(int element);
	void removeAll(int element);
	// ecc...
	
}
In questo modo ci si obbliga ad agire nel modo corretto, visto che non puoi mettere parametri di tipo Node essendo una classe interna privata. Inoltre non c'è bisogno di menarsela con getter/setter/toString ecc... nella classe nodo.