package workflow.fun_logic;
public interface IFunLogic {
public boolean logic(Object arg1 , Object arg2);
}
package workflow.fun_logic;
public class FunLogic_is implements IFunLogic {
public boolean logic(Object arg1, Object arg2) {
/*
将arg1,arg2还原成原类型
*/
return logic(arg1,arg2);
}
public boolean logic(String arg1, String arg2) {
if(null == arg1){return false;}
if(null == arg2){return false;}
return arg1.equals(arg2);
}
public boolean logic(Integer arg1, Integer arg2) {
if(null == arg1){return false;}
if(null == arg2){return false;}
return arg1.intValue() == arg2.intValue();
}
}
//测试
package workflow.fun_logic;
public class text {
public static void main(String[] arg){
IFunLogic obj = new FunLogic_is();
System.out.println(obj.logic("q","q"));
}
} 望不吝赐教
public interface IFunLogic {
public boolean logic(Object arg1 , Object arg2);
}
package workflow.fun_logic;
public class FunLogic_is implements IFunLogic {
public boolean logic(Object arg1, Object arg2) {
/*
将arg1,arg2还原成原类型
*/
return logic(arg1,arg2);
}
public boolean logic(String arg1, String arg2) {
if(null == arg1){return false;}
if(null == arg2){return false;}
return arg1.equals(arg2);
}
public boolean logic(Integer arg1, Integer arg2) {
if(null == arg1){return false;}
if(null == arg2){return false;}
return arg1.intValue() == arg2.intValue();
}
}
//测试
package workflow.fun_logic;
public class text {
public static void main(String[] arg){
IFunLogic obj = new FunLogic_is();
System.out.println(obj.logic("q","q"));
}
} 望不吝赐教
我知道的是,你传了2个字符串进去,它会自动转成Object类型,这样就失去了他自己所特有的属性,当然会出错。
/*
将arg1,arg2还原成原类型
*/
return logic(arg1,arg2);
} 让一个方法调用它自身?不过希望懂的人能过来解释一下原理.我只是感觉这样是错的,但是说不出来为什么
public class Test {
public Test(Object o) {
System.out.println("1");
}
public Test(String a) {
System.out.println("2");
}
public static void main(String args[]) {
new Test("a");
}
}
答案是2
但是如果改成new Test(null);
如果两个类型,比如这里Object 和String有继承关系,按照向上原则,先匹配子类
如果没有继承关系那就完了,比如楼主的String 和Integer,因为,这个函数可以匹配2个方法,且没有任何关系,就会产生编译错误(The constructor is ambiguous)构造函数有歧义
所以最后就变成了调用自己的死递归。
public boolean logic(Object arg1, Object arg2) {
/*
将arg1,arg2还原成原类型
*/
return logic(arg1,arg2); -------------自己调用自己, 死循环
}
修改:将接口改为:
public interface IFunLogic {
public boolean logic(String arg1, String arg2);
public boolean logic(Integer arg1, Integer arg2);
} 同时在类实现接口原来的方法注释掉,其它不变,就可以了
public class FunLogic_is implements IFunLogic {
/*public boolean logic(Object arg1, Object arg2) {
return logic(arg1,arg2);
} */
....
}