主要的
public static List<Viking> uploadVikings(){
List<Viking> vikings = new ArrayList<Viking>();
vikings.add(new Viking("Lean",23,100, new DrinkVikingImp(), new PeeVikingImp(),10));
vikings.add(new Viking("Thor",24,99, new DrinkVikingImp(), new PeeVikingImp(),9));
vikings.add(new Viking("Thanos",25,98, new DrinkVikingImp(), new PeeVikingImp(),9));
vikings.add(new Viking("Hulk",26,97, new DrinkVikingImp(), new PeeVikingImp(),5));
vikings.add(new Viking("Thrall",27,96, new DrinkVikingImp(), new PeeVikingImp(),3));
return vikings;
}
维京阶层
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Viking extends Human{
public Integer proDrinker;
public Pee pee;
public Drink drink;
public void pee() {pee.pee();}
public void drink() {drink.drink();}
}
人类阶级
@Data
@AllArgsConstructor
@NoArgsConstructor
public abstract class Human {
public String Name;
public Integer Age;
public Integer Weight;
}
饮料和小便界面是一样的
public class DrinkVikingImp implements Drink {
@Override
public void drink() {
System.out.println("Viking is Drinking");
}
}
Error: Error:(21, 21) java: no suitable constructor found for Viking(java.lang.String,int,int,com.company.models.DrinkVikingImp,com.company.models.PeeVikingImp,int)
constructor com.company.models.Viking.Viking() is not applicable
(actual and formal argument lists differ in length)
constructor com.company.models.Viking.Viking(java.lang.Integer,com.company.interfaces.Pee,com.company.interfaces.Drink) is not applicable
(actual and formal argument lists differ in length)
这在龙目岛是不可能的。虽然这将是一个非常好的特性,但它需要分辨率来找到超级类的构造函数。超级类只有在Lombok被调用时才被命名。使用导入语句和类路径来查找实际的类并不简单。在编译期间,您不能仅仅使用反射来获取构造函数列表。
来自龙目岛:
@AllArgsConstructor为类中的每个字段生成一个带有1个参数的构造函数。
基于错误消息
com。公司模型。维京人。Viking(java.lang.Integer、com.company.interfaces.Pee、com.company.interfaces.Drink)不适用
你可能需要这个
vikings.add(10, new Viking(new DrinkVikingImp(), new PeeVikingImp()));
vikings.add(9, new Viking(new DrinkVikingImp(), new PeeVikingImp()));
vikings.add(9, new Viking(new DrinkVikingImp(), new PeeVikingImp()));
vikings.add(5, new Viking(new DrinkVikingImp(), new PeeVikingImp()));
vikings.add(3, new Viking(new DrinkVikingImp(), new PeeVikingImp()));
然后你必须自己设定人的属性
您可以使用Lombok的构建器生成器(@SuperBuilder注释)解决此问题,该生成器在1.18版本中引入
@Data
@SuperBuilder
public abstract class Human {
...
}
@Data
@SuperBuilder
public class Viking extends Human {
...
}
然后你就可以建造你的Viking物品,如下所示:
vikings.add(Viking.builder()
.name("Lean")
.age(23)
.weight(100)
.drink(new DrinkVikingImp())
.pee(new PeeVikingImp())
.proDrinker(10)
.build());
还要检查人类类字段名,它们不应该以大写字母开头。
从javase api 8开始,是不推荐的。因此,动态生成是首选的导出对象方式,如下所示: null 我的问题是,当出现在JavaE8 api中时,为什么编译器会出错?
我正在运行一个应用程序,可以在选择或捕捉它们后查看多个图像。当我运行应用程序时,ImageView部分似乎有问题,它说:
我是一个较大的android我想为移动和电视创建一个应用程序,当我试图建立项目时,我看到错误: 错误:(156,33)错误:没有为HeaderItem(int,String,)构造函数HeaderItem(String)找到合适的构造函数。HeaderItem(String)不适用(实际和正式参数列表长度不同)构造函数HeaderItem(long,String)不适用(实际和正式参数列表长度不同
问题内容: 只有最后一部分(我的意思是我仅对此有问题) 当我编译它时,我没有合适的构造函数错误。为什么是这样??顺便说一下,Spirtokouto类的目的是要增加一个计数值(权重)。我可以将一个班级扩展到> 1个班级吗? 问题答案: Box类有两个构造函数:,但它们都不带四个参数,而您要用四个参数来调用它,因此请更改此参数: 对此: 调用必须首先在构造函数中进行。 我可以将一个班级扩展到 > 1个
问题内容: 我在一个Activity中有一个IntentService,当我尝试调用该服务时,它将引发此错误,我发现这很奇怪,因为如果我声明了空的构造函数。 错误: AndroidManifest.xml 活动: 问题答案: 你是一个内部阶级。如果要将其保留在内部,请将其更改为static: 您可能需要阅读不同类型的嵌套类。google的第一个链接:http : //docs.oracle.com