我试图制作一个游戏,为了不编写相同的方法和函数,我在Java中使用协方差和通配符,以便以后能够重用为其他类型的(类似的)游戏编写代码。我当前的问题是无法向ArrayList添加一个片段。
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
public class Deck {
private List<? extends Piece> deck;
private int taille;
public Deck(){
this.deck = new ArrayList<Domino>();
for (int i = 0; i < 7; i++){
for (int j = i; j < 7; j++){
Domino d = new Domino(i,j);
deck.add(d);
}
}
this.taille = deck.size();
}
public List<? extends Piece> getDeck(){
return this.deck;
}
public int tailleActuelle(){
return this.deck.size();
}
public int tailleDepart(){
return this.taille;
}
public void melangeDeck(){
Collections.shuffle(deck);
}
public String toString(){
return "Deck de Dominos : \nTaille de départ : "+this.tailleDepart()+
"\nTaille actuelle : "+this.tailleActuelle();
}
public void printDominosDeck(){
for (Domino d : deck){
System.out.print(d+" ");
}
}
}
public class Piece {
private boolean revele;
public Piece(){
this.revele = false;
}
public boolean estRevele(){
return this.revele;
}
public void pieceRevele(){
if (!this.revele) this.revele = !this.revele;
}
}
public class Domino extends Piece {
//implements Comparable<Domino>
private int faceD, faceG;
public Domino(){
super();
this.faceD = 0;
this.faceG = 0;
}
public Domino(int d, int g){
super();
this.faceD = d;
this.faceG = g;
}
public int getValeurDroite(){
return this.faceD;
}
public int getValeurGauche(){
return this.faceG;
}
public int sommeDesFaces(){
return this.faceD+this.faceG;
}
public String toString(){
return "["+this.faceD+" | "+this.faceG+"]";
}
}
Deck.java:17: error: incompatible types: Domino cannot be converted to CAP#1
deck.add(d);
^
where CAP#1 is a fresh type-variable:
CAP#1 extends Piece from capture of ? extends Piece
Deck.java:46: error: incompatible types: CAP#1 cannot be converted to Domino
for (Domino d : deck){
^
where CAP#1 is a fresh type-variable:
CAP#1 extends Piece from capture of ? extends Piece
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
2 errors
我试图实现的目标是能够正常地将Dominos添加到ArrayList中。以后可能还会有其他类型的游戏!
谢谢。
你看到这另一个所以回答了吗?
更改?将piece
扩展为piece
至少为我编译:
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
public class Deck {
private List<Piece> deck = new ArrayList<Piece>();
private int taille;
public Deck(){
this.deck = new ArrayList<Piece>();
for (int i = 0; i < 7; i++){
for (int j = i; j < 7; j++){
Domino d = new Domino(i,j);
deck.add(d);
}
}
this.taille = deck.size();
}
public List<? extends Piece> getDeck(){
return this.deck;
}
public int tailleActuelle(){
return this.deck.size();
}
public int tailleDepart(){
return this.taille;
}
public void melangeDeck(){
Collections.shuffle(deck);
}
public String toString(){
return "Deck de Dominos : \nTaille de départ : "+this.tailleDepart()+
"\nTaille actuelle : "+this.tailleActuelle();
}
public void printDominosDeck(){
for (Piece d : deck){
System.out.print(d+" ");
}
}
}
我试着在这个网站上搜索类似的问题,但没有找到任何地方他们试图使用一个int数来填充的方法的使用。
我试着在这个网站上搜索类似的问题,但没有发现任何地方他们试图使用一个int数字来填充使用方法。
我试图编译一个从SourceForge得到的仍在开发中的项目。这是它的地址:。https://sourceforge.net/p/groove/code/5475/tree/groove/trunk/我知道这个项目经过了很好的验证,它没有任何错误,但是当我要编译它的时候,我遇到了这个编译错误: 错误在这个文件的第370行:https://sourceforge.net/p/groove/code/
我得到以下错误。第15行:错误:不兼容的类型:boolean不能转换为List Integer.toString()返回一个字符串实例,我将它添加到字符串列表中。为什么它给出了布尔不能转换为错误。因为返回值是字符串,而我要添加的值也是字符串。 在此输入代码
这是我试图解决的一个问题的代码 主要的活动是 我得到以下错误, java:36:错误:不兼容类型:int[]无法转换为>integer[]输出=totalchocolates(ip1);