标签: circular-dependency

Java中的静态循环依赖

对于以下代码:

class A
{
    public static int X;
    static { X = B.Y + 1;}
}
public class B
{
    public static int Y = A.X + 1;
    static {}
    public static void main(String[] args) {
        System.out.println("X = "+A.X+", Y = "+B.Y);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出为:X = 1,Y = 2

为什么?如何???

-Ivar

PS:来自JavaCamp.org的代码片段

java circular-dependency

13
推荐指数
1
解决办法
3232
查看次数

同一个程序集中的循环引用是件坏事吗?

假设我在同一个程序集中有以下类

public class ParentClass : IDisposable
{
  public ChildClass Child
  {
    get { return _child; }
  }
}   

public class ChildClass 
{
   public ParentClass Parent
   {
     get { return _parent; }
     set { _parent= value; }
   }

   public ChildClass (ParentClass parent)
   {
     Parent= parent;
   }

}
Run Code Online (Sandbox Code Playgroud)

如果我错了,请纠正我,但这是糟糕的设计.这会导致内存泄漏或其他一些不可预见的问题吗?显然垃圾收集器能够处理这种循环引用.

编辑

如果这两个类最终在其他类中被这样使用怎么办?

ParentClass objP = new ParentClass ();
ChildClass objC =new ChildClass(objP);
objP.Child = objC;
Run Code Online (Sandbox Code Playgroud)

想一想......

.net c# circular-dependency circular-reference

13
推荐指数
2
解决办法
1690
查看次数

AngularJS循环依赖

我正在制作一个记录器服务,通过将错误(或调试,如果启用)保存到indexedDB数据库中来扩展angular的$ log服务.这是代码:

angular.module('appLogger', ['appDatabase'])

.service('LogServices', function($log, Database) {

    // ...

    this.log = function(type, message, details) {
        var log = {};
        log.type = type
        log.context = this.context;
        log.message = message;
        log.dateTime = moment().format('YYYY-MM-DD HH:mm:ss');
        log.details = details || '';
        $log[type.toLowerCase()](log);

        if (type === 'ERROR' || this.logDebug) {
            Database.logSave(log);
        }
    };

    // ...
})
Run Code Online (Sandbox Code Playgroud)

这是按照预期在我的服务中工作.现在的问题是我无法在数据库服务中使用我的记录器,因为它会抛出循环依赖性错误.我理解这个问题,但我不知道如何解决它...我应该如何解决这个问题?

谢谢你的帮助:-)

circular-dependency angularjs

13
推荐指数
1
解决办法
2万
查看次数

在C#中,如何找到循环依赖链?

当一个部署项目包含第二个部署项目的项目输出,而第二个项目包含第一个项目的输出时,通常会发生此错误.

我有一个检查循环依赖的方法.在输入中,我们有一个包含,例如,一个词典<"A", < "B", "C" >><"B", < "A", "D" >>,这意味着,A取决于BC,我们有与循环依赖A->B.

但通常情况下我们会遇到更复杂的情况,并且存在一系列依赖关系.如何修改此方法以查找依赖链?例如,我想要一个包含chain的变量A->B->A,而不是类A与class有冲突B.

private void FindDependency(IDictionary<string, IEnumerable<string>> serviceDependence)
Run Code Online (Sandbox Code Playgroud)

c# circular-dependency

13
推荐指数
2
解决办法
5068
查看次数

Xcode 10框架依赖循环与自身

在Xcode 10上,当我进行增量构建时,我正在使用我的一个框架获得此构建错误(clean build work):

Showing All Messages
:-1: Cycle inside LoggingSharedFramework; building could produce unreliable results.
Cycle details:
? Target 'LoggingSharedFramework' has a command with output 'blablabla/Build/Products/Debug-iphonesimulator/LoggingSharedFramework.framework/LoggingSharedFramework'
? Target 'LoggingSharedFramework' has link command with output 'blablabla/Build/Intermediates.noindex/blablablah/Debug-iphonesimulator/LoggingSharedFramework.build/Objects-normal/x86_64/LoggingSharedFramework'
Run Code Online (Sandbox Code Playgroud)
  • 该框架没有目标依赖项
  • 标题阶段在编译源之前
  • 我已经浏览了每个文件,并确保在LoggingSharedFramework之外没有导入文件(除了Cocoa之外)
  • 我没有使用任何依赖管理系统(例如carthage),因为没有外部依赖.该框架在项目中维护

这个错误对我没有意义.实际原因是什么?我怎样才能弄清楚是什么引入了这个循环?我该如何修复周期?

xcode circular-dependency ios xcode10

13
推荐指数
1
解决办法
2302
查看次数

我的C#项目中的循环引用

我有以下情况:

  1. 一个项目MyCompany.MyProject.Domain包含我的域模型,以及部分类(如Contact).

  2. 我希望'扩展'(通过部分类,而不是扩展方法)我的Contact类具有一个属性Slug,它将为我提供一个简单的URL友好文本表示的名字和姓氏.

  3. 我有一个字符串扩展方法ToSlug()在我Utility的项目MyCompany.MyProject.Utilities这不正是我想要2).

  4. 问题:我的Utility项目已经引用了我的Domain项目,这意味着我无法让Domain项目看到Utility项目的ToSlug()方法而不会导致循环引用.

我并不热衷于创建另一个项目来解决这个问题,我真的希望保持Slug逻辑共享.

我怎么解决这个问题?

c# circular-dependency

12
推荐指数
1
解决办法
1万
查看次数

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(...)
Run Code Online (Sandbox Code Playgroud)

看看Javadocs,我不希望defineClass抛出这个特殊的错误. org/apache/commons/codec/binary/Hex是我正在尝试加载的类.defineClass在它定义类之前,它几乎就像想要一个类的副本 - 这对我来说毫无意义.

想法?

java circular-dependency classloader

12
推荐指数
1
解决办法
1万
查看次数

C++,两个有共同需求的类

我已经将Java的科学仿真平台转换为C++.我试图尽可能地保持设计与以前的实现相同.在java中,由于后期绑定,循环依赖项在运行时被解析.然而,循环依赖已经在C++中造成了一团糟.

  1. 是否有自动化工具可以分析和列出循环包含和参考?(Visual Studio 2010仅发出大量无意义错误).

  2. 我试图尽可能使用前向引用.但是在某些情况下,两个类都需要另一个类的功能(即调用方法,这使得无法使用前向引用).这些需求存在于Logic中,如果我从根本上改变设计,它们将不再代表真实世界的交互.

    我们怎样才能实现两个需要彼此方法和状态的类?是否可以在C++中实现它们?

例子:

  • 示例1:我有一个名为"World"的类,它创建"Agent"类型的对象.代理需要调用World方法来获取其环境的信息.World还需要遍历代理并执行其"运行"方法并获取其状态(状态更新可能会反向完成以解决问题的这一部分而不是运行方法).
  • 示例2:代理创建其"意图"的集合.每个代理需要迭代其意图并运行/更新/读取意图状态.意图还需要通过代理获取有关环境的信息(如果直接通过"世界"完成,它将再次创建复杂的圆圈)以及代理本身的信息.

下图显示了一个类的子集,以及它们的一些方法和属性:

类的子集,以及它们的一些方法和属性

c++ circular-dependency

12
推荐指数
1
解决办法
1万
查看次数

如何在仍然使用Dagger2的同时解决循环依赖?

我有两个班,Foo<T>Bar,这是互相依赖的,以及各种其他类.我使用Dagger-2进行依赖注入,但如果我天真地添加循环依赖,Dagger会在运行时遇到堆栈溢出.什么是重构类来解决这个问题的好方法,同时仍然使用Dagger注入所有其他依赖项,并且对现有调用的重复和更改最少?

circular-dependency dagger dagger-2

12
推荐指数
1
解决办法
4840
查看次数

Nestjs Swagger 4 的循环依赖

当我将@nest/swagger库更新到版本 4 时,发生了此错误:

(node:16134) UnhandledPromiseRejectionWarning: Error: A circular dependency has been detected (property key: "customer"). Please, make sure that each side of a bidirectional relationships are using lazy resolvers ("type: () => ClassType").
    at SchemaObjectFactory.createNotBuiltInTypeReference (/opt/desenvolvimento/Haizen/projectx_back/node_modules/@nestjs/swagger/dist/services/schema-object-factory.js:182:19)
    at SchemaObjectFactory.mergePropertyWithMetadata (/opt/desenvolvimento/Haizen/projectx_back/node_modules/@nestjs/swagger/dist/services/schema-object-factory.js:117:25)
    at /opt/desenvolvimento/Haizen/projectx_back/node_modules/@nestjs/swagger/dist/services/schema-object-factory.js:66:35
    at Array.map (<anonymous>)
    at SchemaObjectFactory.exploreModelSchema (/opt/desenvolvimento/Haizen/projectx_back/node_modules/@nestjs/swagger/dist/services/schema-object-factory.js:65:52)
    at SchemaObjectFactory.createNotBuiltInTypeReference (/opt/desenvolvimento/Haizen/projectx_back/node_modules/@nestjs/swagger/dist/services/schema-object-factory.js:187:37)
    at SchemaObjectFactory.mergePropertyWithMetadata (/opt/desenvolvimento/Haizen/projectx_back/node_modules/@nestjs/swagger/dist/services/schema-object-factory.js:117:25)
    at /opt/desenvolvimento/Haizen/projectx_back/node_modules/@nestjs/swagger/dist/services/schema-object-factory.js:66:35
    at Array.map (<anonymous>)
    at SchemaObjectFactory.exploreModelSchema (/opt/desenvolvimento/Haizen/projectx_back/node_modules/@nestjs/swagger/dist/services/schema-object-factory.js:65:52)
Run Code Online (Sandbox Code Playgroud)

我的模型类似乎是这样的:

@Entity()
export class Job {
.
.
.
    @ManyToOne(type => Customer, customer => customer.jobs)
    @ApiProperty({ type: …
Run Code Online (Sandbox Code Playgroud)

circular-dependency swagger nestjs

12
推荐指数
3
解决办法
3854
查看次数