Java의 복사 생성에 대한 질문이 있습니다. 다음 클래스를 고려하십시오.Java에 대한 생성자 질문 복사
복사 생성자에서 new (Integer (other.id))를 호출하여 생성자에 전달되는 새 정수 객체를 가져올 수 있지만 컴파일러에서 말하는 것처럼 새 T (other.data)를 말할 수는 없습니다. 유형 T를 인스턴스화 할 수 없습니다. 일반 항목이 복사 된 경우 2 개의 객체가 기본 데이터를 공유하도록 참조를 전달하지 않을 것입니다.
또한 getLinks 메소드에서 새로운 작업을 수행하고 목록의 새 오브젝트를 작성하지만 목록에 포함 된 항목의 새로운 오브젝트를 작성하거나 새 오브젝트를 작성하거나 기존 오브젝트에 대한 참조 만 포함하게됩니다 객체는 같은 데이터를 가리키는 2 개의리스트를 가지도록 아이템을 나열합니다. 아래 주석/코드를 참조하십시오. 전문성에 미리 감사드립니다.
class DigraphNode<T>
{
Integer id;
T data;
ArrayList<DigraphNode<T> > links;
public DigraphNode(Integer i)
{
id = i;
links = new ArrayList<DigraphNode<T> >();
}
public DigraphNode(Integer i, T d)
{
id = i; data = d;
links = new ArrayList<DigraphNode<T> >();
}
public DigraphNode(DigraphNode<T> other)
{
other.id = new Integer(other.id);
other.data = other.data; // line in question
this.links=other.getLinks(); // also will create a new list with references
// or will it deep copy the items contained in the list?
// see getLinks() method below
}
public void setData (T d) { data = d; }
public void addLink (DigraphNode<T> n) { links.add(n); }
public void addLinks (ArrayList<DigraphNode<T> > ns) { links.addAll(ns); }
public ArrayList<DigraphNode<T> > getLinks()
{
return new ArrayList<DigraphNode<T> >(links);
}
public void printNode()
{
System.out.print("Id: " + id + " links: ");
for (DigraphNode<T> i : links)
{
System.out.print(i.id + " ");
}
System.out.println();
}
}
시도 그래서 나는 그들을 함께 총괄 어떤 문제를 보지 못했다 생성자와 질문 – aaronman
그들은 모두 같은 클래스에 관련된 모든 당 하나 개의 질문을합니다. 윤곽을 그리기 위해 별도의 단락을 만들었습니다. 향후 게시물에 대한 귀하의 조언을 고려하거나 취할 것입니다. 감사. – bjackfly
그냥 답을 얻을 수 있도록 돕기 위해 사람들은 재미있는 질문이라고 생각하지 않으면 사람들이 텍스트 벽을 읽지 않으려 고합니다. 간단한 질문을 짧게 유지하는 것이 가장 좋습니다 – aaronman