Tag: 循环依赖

Gson使用存根序列化循环引用

我正在尝试实现一些简单的Json序列化function,但我很难应对Gson的大量复杂性。 所以基本上我有一堆实体类,它们通过大量的循环引用相互引用。 要将此结构序列化为JSON,我想跟踪已经序列化的对象。 Entity类都实现了一个名为Identified的接口,它有一个方法String getId()给出一个全局唯一的id。 因此,在对一个根元素进行序列化时,我希望将所有遇到的ID存储在一个Set并根据该集决定是否完全序列化对象或将该对象序列化为存根 “something”: { “__stub”: “true”, “id”: “…” } 在我看来,这不应该是一项艰巨的任务,但我无法将某些东西放在一起。 使用自定义JsonSerializer我不能以默认方式序列化一个对象(不能被序列化为存根)。 使用TypeAdapterFactory ,我无法访问实际对象。 所以,任何有关如何实现这一目标的帮助都会非常好! 最好的祝福

OO设计和循环依赖

在设计我的类时,我目前正在努力解决循环依赖问题。 自从我读到有关贫血领域模型 (我一直在做的事情)以来,我一直在努力摆脱创建只是“吸气剂和孵化器”的域对象并回到我的OO根源。 但是,下面的问题是我经常遇到的问题,我不知道应该如何解决它。 假设我们有一个Team类,它有很多玩家 。 这是什么运动并不重要:)球队可以添加和删除球员,就像球员离开球队并加入另一球员一样。 所以我们有一个团队,其中有一个玩家列表: public class Team { private List players; // snip. public void removePlayer(Player player) { players.remove(player); // Do other admin work when a player leaves } } 然后我们有了Player,它引用了Team: public class Player { private Team team; public void leaveTeam() { team = null; // Do some more player stuff… […]

发现循环依赖的问题

我正在设计一个系统,其中有两个模块,一个是gestions文件,另一个是用户。 对于某些逻辑操作,他们需要彼此提供的服务。 每个模块都由一个单例表示,它实现了一个为彼此提供一些服务的接口,抽象工厂提供它们,如下所示: public class UserMain implements UserInternalService { /* * Internal interfaces */ /** * Allows interaction with the projects database. */ FilesInternaService fileSystem; /** * Constructor is private, as this is a singleton. */ protected UserMain() { } private static UserMain singleton = null; /** * Singleton factory. Returns a reference to the […]

处理循环依赖

我想知道是否有人可以建议任何好方法来打破java中两个类之间的循环依赖! FindBugs建议使用接口,所以我想知道是否有人对这类问题有任何良好的经验! 提前致谢 !

这是循环依赖吗?

这段代码是循环依赖的一个例子吗? package expr; import sheet.Sheet public class AdressExpr implements Expr { private Address address; private Sheet sheet; public double value(Sheet sheet) { return sheet.value(address); } } public interface Expr { public double value(Sheet sheet); } public class Adress { // omissions } package sheet; import expr.Address; import expr.Expr; public class Sheet implements SuperSheet { private […]

ClassLoader.defineClass抛出的ClassCircularityError

我正在使用自定义类加载器加载类。 在大多数情况下,一切正常,但有时当我加载特别复杂的项目/库时,我得到一个奇怪的错误: Exception in thread “main” java.lang.ClassCircularityError: org/apache/commons/codec/binary/Hex at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.lang.ClassLoader.defineClass(ClassLoader.java:466) at my.custom.class.Loader.loadClass(…) 看看Javadocs,我不希望defineClass抛出这个特殊的错误。 org/apache/commons/codec/binary/Hex是我正在尝试加载的类。 这几乎就像defineClass在定义类之前想要一个类的副本 – 这对我来说没有意义。 想法?

Java中的静态循环依赖

对于以下代码: class A { public static int X; static { X = BY + 1;} } public class B { public static int Y = AX + 1; static {} public static void main(String[] args) { System.out.println(“X = “+A.X+”, Y = “+BY); } } 输出为:X = 1,Y = 2 为什么? 如何??? -Ivar PS:来自JavaCamp.org的代码片段

java类中的循环依赖

我有以下课程。 public class B { public A a; public B() { a= new A(); System.out.println(“Creating B”); } } 和 public class A { public B b; public A() { b = new B(); System.out.println(“Creating A”); } public static void main(String[] args) { A a = new A(); } } 可以清楚地看到,类之间存在循环依赖关系。 如果我尝试运行A类,我最终得到一个StackOverflowError 。 如果创建了依赖关系图,其中节点是类,则可以轻松识别此依赖关系(至少对于具有少量节点的图)。 那为什么JVM不能识别这个,至少在运行时? JVM可以在开始执行之前至少发出警告,而不是抛出StackOverflowError […]