java - 在 Java 中访问 2 个对象相互引用时出错
问题描述
我创建了两个 POJO 类 Author 和 Book。其中 Author POJO 类需要 Book 作为参数,而 Book POJO 需要 Author 作为参数,即两者都是双向相关/循环相关的。
作者 Pojo 类:
Public class Author{
Private Book book;
Private String authorname;
publicIndividual(Book book, String authorname){
this.authorname=authorname;
this.book = book
}
// getters and setters…
}
预订pojo类:
Public class Book{
Private Author author;
Private String bookname;
Private String id;
publicIndividual(String id, String bookname, Author author){
this.id=id
this.bookname = bookname;
this.author = author
}
// getters and setters…
}
用于设置数据的 Java 类:
public final Author author = new Author(book, authorname);
public final Book book = new Book(id, bookname, author);
我正面临错误“非法前向引用”,因为在初始化之前尝试调用 book 方法。如何在相互依赖的 pojo 类中实现这种情况?
解决方案
主要是因为您有交叉引用,您可以在正确设置后使用 null 一个引用进行实例化。
public class TestRef
{
public static void main(String args[])
{
Author author = new Author(new Book("1","bookname",null), "authorname");
System.out.println(author+" Book.author::"+author.book.author);
author.book.author=author;
System.out.println(author+" Book.author::"+author.book.author);
}
static class Author{
Book book;
String authorname;
public Author(Book book, String authorname)
{
this.authorname=authorname;
this.book = book;
}
public String toString()
{
return "Author("+book+","+authorname+")";
}
}
static class Book{
Author author;
String bookname;
String id;
public Book(String id, String bookname, Author author){
this.id=id;
this.bookname = bookname;
this.author = author;
}
public String toString()
{
return bookname+"_"+id;
}
}
}
输出
//with null ref on Book for Author
Author(bookname_1,authorname) Book.author::null
//after set up properly ref
Author(bookname_1,authorname) Book.author::Author(bookname_1,authorname)