我有方法Mappa()创建数组沉降(使用Settore类的方法Settore()的坐标)和数字矩阵Matrice。 Settore类有几个子类(我使用子类Sicuro来解释代码),它从枚举Nome中为一组特定的坐标设置属性SettoreNome。我正在创建方法MappaCreator(),它根据Matrice [x] [y]的值指定每个Settore(x,y)的SettoreNome,似乎我没有正确调用方法因为我得到的错误是该方法未定义为子类Sicuro。
package mappa;
public class Settore {
private Nome settoreNome;
private char letteraX;
private final int coordinataX;
private final int coordinataY;
private int giocatoriPresenti;
public int getGiocatoriPresenti() {
return giocatoriPresenti;
}
public void setGiocatoriPresenti(int giocatoriPresenti) {
this.giocatoriPresenti = giocatoriPresenti;
}
public char getLetteraX() {
return letteraX;
}
public void setLetteraX(char letteraX){
this.letteraX = letteraX;
}
public Settore (int coordinataX, int coordinataY){
this.coordinataX=coordinataX;
this.coordinataY=coordinataY;
}
public int getX(){
return coordinataX;
}
public int getY(){
return coordinataY;
}
public Nome getSettoreNome() {
return settoreNome;
}
public void setSettoreNome(Nome settoreNome) {
this.settoreNome = settoreNome;
}
public static void add(Settore[][] settore) {
// TODO Auto-generated method stub
}
}
package mappa.product;
import mappa.Settore;
public class Mappa {
private Name mappaName;
private final Settore [][] settore;
private int Matrice [][];
private static final int X=23;
private static final int Y=14;
public Mappa (){
settore = new Settore[X][Y];
for (int i=0; i < X; i++){
for (int j=0; j<Y; j++) {
settore[i][j] = new Settore (i,j);
}
}
Matrice = new int[23][14];
}
public int[][] getMatrice() {
return Matrice;
}
public void setMatrice(int matrice[][]) {
Matrice = matrice;
}
public Name getMappaName() {
return mappaName;
}
public void setMappaName(Name mappaName) {
this.mappaName = mappaName;
}
public Settore[][] getSettori(){
return settore;
}
public void addSettori(){
Settore.add(settore);
}
}
package mappa.creator;
import mappa.product.*;
import mappa.*;
public class MappaCreator {
protected Mappa mappa;
protected Settore settore;
protected int x;
protected int y;
public MappaCreator(){
Mappa mappa = new Mappa();
this.mappa=mappa;
int x; int y;
if (mappa.getMatrice()[x][y]==1){
Sicuro.Sicuro(x,y); //this is where i get the error
}
}
public void createMappa(){
Mappa mappa = new Mappa();
this.mappa=mappa;
}
public void createSettore(){
Settore settore = new Settore(x,y);
this.settore=settore;
}
}
package mappa;
public class Sicuro extends Settore {
public Sicuro(int coordinataX, int coordinataY) {
super(coordinataX, coordinataY);
setSettoreNome(Nome.SICURO);
}
}
package mappa;
public enum Nome {
SICURO, PERICOLOSO, SCIALUPPA, ALIENI, UMANI
}
答案 0 :(得分:2)
更改
Sicuro.Sicuro(x,y); //this is where i get the error
到
new Sicuro(x,y); //this should not produce any error
new Sicuro()
是构造函数的调用。
构造函数不指定任何返回类型,并且必须与类具有完全相同的名称。
答案 1 :(得分:0)
请参阅以下帖子以更好地了解方法与构造函数
Methods vs Constructors in Java
Sicuro(x,y) is a constructor.
如果它是静态方法,那么我们只能使用Classname调用它。
但是在你的代码中它是一个构造函数。 在为类创建对象时,会自动调用构造函数 像
new Sicuro(x,y);
现在编译器将执行Sicuro(x,y)构造函数。
答案 2 :(得分:0)
我认为你想要从类Sicuro创建一个对象而不是调用它的一个方法。对象的创建调用类的构造方法。
替换:
Sicuro.Sicuro(X,Y);
使用:
Sicuro mysicuro = new Sicuro(x,y);
//然后用mysicuro做什么