如果我有以下代码
public class Can
{
...
public Can makeCan(String cont)
{ boolean winner = false;
Can a;
if(turn)
{ winner = true;
a = new PromotionCan(cont,winner);
}
else
{ a = new Can(cont);
}
return a;
}
...
}
首先,这甚至是可能的,因为它编译得很好。但是我不能使用AdvtionalCan
中的方法执行操作:
public class PromotionCan extends Can
{
...
public boolean isWinner() throws NotEmptyCanException
if(win)
{ System.out.println("Can is winner");
return win;
}
else
{ System.out.println("Can is not winner");
return win;
}
}
...
}
makeCan是否不同时返回Can和PromotionalCan?如果是这样,当返回PromotionalCan时,如何对变量进行操作?谢谢
编辑:PromotionalCan继承自Can,第二种方法是在PromotionalCan中
makeCan只会返回一个Can,因为这是它的返回类型,如此行所示:
public Can makeCan(String cont)
我假设PromotionalCan是Can的一个子类型,但我的第一条语句仍然有效——makeCan将只返回Can类型的对象。
对于一堆带有泛型的包装类,我的继承结构遇到了一些麻烦。这基本上是结构: 这将与当前代码一起编译和工作,但是,这似乎很危险。如果调用方像这样使用这个方法:,它将很好地编译,但是如果findMiddle尝试返回SubBWrapper,则在运行时会有一个ClassCastException。我以为行得通却行不通的是: 所以我的问题基本上是,有没有正确的方法来编写编译、运行并遵循最佳实践的方法findMi
我有一节课
我有一个任务,我们要创造一个石头,纸,剪刀的游戏。它指定我们必须创建一个抽象的“工具”类,其中有三个子类:“ToolRock”、“ToolPaper”、“ToolScissors”。抽象类应该有一个“+getFeagnet():tool”函数(用斜体写成)。 我的假设是做一个像这样的抽象函数: RockTool类被指定为具有函数“+get弱点():tool”(不是用斜体写的),我的想法是创建一个覆
我不确定这在Java中是否可行。而且,我也不知道该在谷歌上查询什么。无论如何,我想要一个方法,它将一个类(接口或类)作为参数,并且该方法的返回类型是该类的一个实例。我不想事后重铸一个物体。 我不确定这个功能是否存在,或者语法是什么。假设我有一个名为XYZ的类,这是我的伪方法。 现在假设XYZ是某种通用语法。这在Java中可能吗?谢谢你的帮助。
在java中,我们可以缩小返回类型和throws异常类型(甚至删除throws子句): 但是,参数类型呢(如果A采用< code>T,那么为什么B不采用< code >?超级T)如: 让我们考虑一下我认为完全符合逻辑的这段代码: 所以我要说的是,在使用的代码上下文中仍然有效。
我正试图从使用observable转换下面的observable代码。使用可管道操作符创建到。 我已经尝试了下面的方法,但是我得到了一个转换错误,无法转换可观察的类型。看不见的。如有任何帮助,我们将不胜感激。