package LinkedList;
public class Linkedlist<T> {
    private int size;
    Node head;
    Node tail;
    public Linkedlist() {// default constructor
        size = 0;
        head = null;
        tail = null;
    }
    public class Node {// Node class
        T data;// current node data
        Node next;// reference to next node
        Node prev;// reference to previous node
        public Node(T data) {// def constructor
            this.data = data;
            next = null;
            prev = null;
        }
        @Override // to check equality of two nodes
        public boolean equals(Object obj) {
            if (this == obj)// checks if both have same reference
                return true;
            if (obj == null ||this==null || this.getClass() != obj.getClass())
                return false;
            @SuppressWarnings("unchecked")//casting obj to node gives a unchecked cast warning.
            Node n=((Node)obj);
            if(!(this.data==n.data))
                return false;
            return true; 
        }
As in the code above, I have a generic class Linkedlist which nests a Node class. The functionality of the code is very obvious, I'm trying to create a doubly linked list.
The problem is that in the equals function in the Node class, I am typecasting the object obj to a Node which gives an unchecked cast warning which I have currently suppressed. The autogenerated equals function from Visual Studio Code gives this same warning. I know that this warning must mean that my code can somehow break during runtime, but I don't know how and I am new to generics and programming in general. Is there any way to resolve this warning?
 
     
    