LISP-like list class
There is a serious flaw in your handling of the empty list. A user would expect that these definitions are equivalent, but they ain't:

Nlist n1 = new NList("x");
Nlist n2 = new NList("x", new NList());


I strongly recommend to have an explicit subclass for the empty list (possibly a singleton) and to prohibit null for _cdr.