发送时发生错误:
myClaass.put(new ImenResult(1).Show());
myClaass.put(new ImenResult(2));
我理解为什么我遇到这个问题因为我发送到具有接口参数的类。我的问题是:我必须添加到接口以发送此数据并且没有错误,因为此结构必须是相同的(不是我的决定),因为稍后我可以发送字符串或其他东西(类)。我知道这是一个非常困难的问题。
程序:
Class_1 myClaass = new Class_1();
myClaass.put(new ImenResult(1).Show());
myClaass.put(new ImenResult(2));
myClaass.put(new ImenResult(3));
ImenResult:
public class ImenResult implements IImenResult{
public Integer i;
public ImenResult(Integer i ) {
this.i = i;
}
@Override
public Integer Show() {
return i;
}
Class_1
public class Class_1 implements IQRack{
public List<IAdant> adan;
public void put(IAdant value) {
adan.add(value);
}
}
IAdan
public interface IAdant {
}
感谢您的帮助,我告诉您这是一个很难的问题(当然对于那些不是Java专家的人),但主题是固定的。我给了你积分。再次感谢您的帮助。 [关闭]
答案 0 :(得分:3)
行myClaass.put(new ImenResult(1).Show());
将失败,因为myClaass.put()
期望获得实现IAdant
的对象,但您要发送Integer
。 Integer
未实施IAdant
。
答案 1 :(得分:3)
您应该在put(Integer)
中实施Class_1
方法,以实现此目的
public class Class_1 implements IQRack {
public List<IAdant> adan;
public void put(IAdant value) {
adan.add(value);
}
void put(Integer Show) {
throw new UnsupportedOperationException("Not yet implemented");
}
}
<强>更新强> 在您发表评论后,我认为这就是您要做的事情:
public class Class_1 implements IQRack {
private List<IAdant> adan = new ArrayList<IAdant>();
public Class_1(IAdant i) {
this.put(i);
}
void put(IAdant Show) {
throw new UnsupportedOperationException("Not yet implemented");
}
}
public class IAdant {
Boolean bValue;
String sValue;
Integer iValue;
public IAdant(Object o) {
if (o.getClass().isInstance(new Integer(1))) {
iValue = (Integer) o;
} else if (o.getClass().isInstance(false)) {
bValue = (Boolean) o;
} else if (o.getClass().isInstance("")) {
sValue = (String) o;
}
}
}
答案 2 :(得分:2)
myClaass.put(new ImenResult(1).Show());
myClaass.put(new ImenResult(2));
第一种情况是文件,因为你的put方法需要IAdant(任何实现IAdant的东西)并且你传递一个整数,因为show方法会返回一个。
第二种情况会因为你的ImenResult类没有实现或IAdant类型的原因而失败。
如果您希望第二种情况起作用,请在ImenResult类中实现IAdant。
public class ImenResult implements IImenResult,IAdant{
//implement the methods from both the interfaces
}
现在myClaass.put(new ImenResult(2));
行可以解决任何编译器错误。
如果你想获得第一个案例myClaass.put(new ImenResult(1).Show());要编译,你必须重载myClass类中的put方法。
public void put(int val) {
//do your logic here
}