java 循环引用_利用接口解决Java工程间循环引用而报错的问题 | 学步园

解决Eclipse中Java工程间循环引用而报错的问题

如果我们的项目包含多个工程(project),而它们之间又是循环引用的关系,

那么Eclipse在编译时会抛出如下一个错误信息:

“A cycle was detected in the build path of project: XXX”

解决方法非常简单:

Eclipse Menu -> Window -> Preferences... ->

Java -> Compiler -> Building -> Building path problems -> Circular dependencies ->

将Error改成Warning。

但是在Android中

发现循环引用后不能正常build了,找不到Android的apk,所以不适用,寻求另一种方法如下:

利用接口生成副本回调的方法就好,这样可以避免循环引用,也许可以认为接口是那个实例的一份副本

创建接口回调

*   1.新建一个接口让Test2实现,相当于Test2的一份副本

*   2.在Test2中通过setTest2duplicate(Test2duplicate test)方法传递给Test一个实例

*   3.运行Test2的main方法,调用Test的方法,接着在Test的方法中就可以调用回Test2的方法了

Test.java

public class Test {

//新建一个Test2的实例

public static Test2duplicate test2 = null;

//提供设置Test2实例的方法

public static void setTest2duplicate(Test2duplicate test){

System.out.println("获取到一个test2");

test2 = test;

}

public static void sayHello(){

System.out.println("Hi,this is Test!not Test2...");

if (test2 !=null) {

test2.sayHello2();

}else {

System.out.println("test2 is null!");

}

}

Test2.java

/**

* @author Juhn.Xu

* 2012-8-20

*

* 先调用Test的方法,再回调自己的方法

*

*/

public class Test2 implements Test2duplicate{

public Test2() {

}

public static void main(String[] args) {

//先运行Test的方法,此时未传递Test2的实例

Test.sayHello();

//传递一个Test2的实例给 Test

Test.setTest2duplicate(new Test2());

//再运行Test的方法

Test.sayHello();

}

public void sayHello2(){

System.out.println("Hi,this is Test2");

}

}

Test2duplicate.java

/**

* @author Juhn.Xu

* 2012-8-20

*

* 作为Test2的一个副本,提供Test2的sayHello2()方法

*/

public interface Test2duplicate {

public void sayHello2();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值