LINUX.ORG.RU

Java - Ламерский вопрос.


0

0

Блин, совсем джаву забыл. Пытаюсь написать double linked list, но ничего не выходит. Ткните носом в ошибки:

[temp]$ cat Node.java
package temp;
public class Node {
protected Object _data;
protected Node _next;
protected Node _previous;
/**Default constructor. Constructs an empty node*/
public Node(){
_data=null;
_next=null;
_previous=null;
}
/**Overloaded constructor*/
public Node(Object o, Node p, Node n){
_data=new Object (o);
_next=new Node (n);
_previous=new Node (p);
}
}
[temp]$ javac Node.java
Node.java:14: Object() in java.lang.Object cannot be applied to (java.lang.Object)
_data=new Object (o);
^
Node.java:15: cannot resolve symbol
symbol : constructor Node (temp.Node)
location: class temp.Node
_next=new Node (n);
^
Node.java:16: cannot resolve symbol
symbol : constructor Node (temp.Node)
location: class temp.Node
_previous=new Node (p);
^
3 errors
[temp]$

★★

cd ..

javac temp/Node.java

anonymous
()

Node.java:14: Object() in java.lang.Object cannot be applied to (java.lang.Object)
Означает что конструктора Object(Object a) не существует.
Это легко проверить по тексту класса Object. Там вообще не заявлено
ни одного конструктора. Т.е. есть только формальный Object
без параметров.
Node.java:15: cannot resolve symbol
symbol : constructor Node (temp.Node)
Ситуация с 15/16 строками аналогичная:
среди всего набора конструкторов Node нет конструктора
с одним параметром.

А зачем вообще делается попытка создать копию объекта?
LikedList не пытается сделать это. Там просто вводится элемент
Entry (аналогичный Node) и объект просто запоминается в нем.
Это корректно, т.к. запоминается просто ссылка.

Если же нужна защита от модификации, то
1. Либо использовать клонирование (clone) и соответственно
все сделать для корректной работы его (геморно).
2. Явно вызывать дублирование (нужной природы)

io ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.