public class User{
private Integer id;
private String name;
private String password;
private String picture;
private String trueName;
private Integer age;
private Date lastLoginTime;
private Date registerTime;
private Boolean isActivity;
private String lastLoginIp;
private Set blogs = new HashSet();
private Set fans = new HashSet();
private Set idols = new HashSet();
private Set collections = new HashSet();
private Set comments = new HashSet();
private Set transmits = new HashSet();
}
上面这是微博的User类,下面是微博的微博内容类:
public class MicroBlog
{
private Integer id;
private String content;
private String face;
private String picture;
private String music;
private String video;
private Date time;
private String ip;
private User user;
private Set collections = new HashSet();
private Set transmits = new HashSet();
}
用户类里面有该用户所发布过的所有微博的集合属性值,微博类里面有发布该微博的用户属性。现在的问题是有一个用户发布微博时,服务器端接收到了该用户的id和微博的内容,我现在得把这条微博存储到数据库中,然后我得根据获取到的用户id,去数据库中取出该用户的对象user,但是取user时会调用根据用户id去取他所发布过的微博集合的方法,但是根据用户id去取他所发布过的微博集合的方法中又调用了根据用户的id去取该用户对象的方法(因为数据库微博表中记录的是发布微博的用户的id值),这样就形成了循环调用了,我该怎么解开这种死循环调用呀?
简单微博服务器端关联对象之间的关系处理
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-02 20:02关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在Java中,我们可以使用反射来实现这一目标。以下是一个简单的示例,展示了如何通过反射来解耦用户ID和用户对象的调用。
首先,我们需要创建一个接口,用于表示用户对象的状态变化。
public interface UserListener { void onUserChanged(User user); }然后,我们可以在User类中实现这个接口,并且为每个方法提供对应的实现。
public class User implements UserListener { // ... @Override public void onUserChanged(User user) { this.user = user; } }接下来,我们在MicroBlog类中添加一个方法,用于监听用户状态的变化。
public class MicroBlog extends BaseMicroBlog implements UserListener { // ... @Override public void onUserChanged(User user) { super.onUserChanged(user); if (this.user != null && !this.user.equals(user)) { this.collections.addAll(this.user.getCollection()); this.transmits.addAll(this.user.getTransmit()); } } }最后,在主程序中,你可以使用反射来调用这些方法。
// 创建一个微博实例 MicroBlog microBlog = new MicroBlog(); // 添加用户到集合中 microBlog.getUser().getFans().add(user); // 调用用户监听器 microBlog.onUserChanged(microBlog.getUser()); // 打印粉丝列表 System.out.println("Fans: " + microBlog.getUser().getFans()); // 打印关注列表 System.out.println("Follows: " + microBlog.getUser().getFollows());在这个例子中,
onUserChanged()方法会在用户状态发生变化时被调用。它将收集新的粉丝、关注者等信息,并更新相应的集合。注意:这只是一个基本的例子,实际的应用可能需要更复杂的逻辑来处理更多的用户状态变化事件。例如,你可能需要跟踪用户的所有行为,而不是只关心他们的粉丝或关注者数量。
解决 无用评论 打赏 举报