解决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();
}