无法将随机枚举值传递给 Java 中的函数
Cannot pass random enum value to function in Java
干杯,我是 java 的新手,我和我 运行 遇到了一个问题
我有三个 classes,都继承了它们之间的东西。开始我有一个 class A:
public class A{
private int index;
public A(int index) {
System.out.println("Creating an instance of A");
this.index = index;
}
}
然后我有一个 A 的子类,class M 里面有一个枚举:
public class M extends A{
public enum Letter {
A,B,C;
}
private Letter letter;
public M(int index, Letter aLetter) {
super(index);
System.out.println("Creating an instance of M");
this.letter = aLetter;
}
}
最后一个 class P , subclass of M:
public class P extends M {
private T t;
public enum T{
o,
a,
t
}
public P(int index, Letter aLetter, T aT) {
super(index,aLetter);
System.out.println("Creating an instance of P");
this.t = aT;
}
}
我想做的是创建例如class P 的 3 个对象,并将这些枚举中的每一个的值随机传递给它们。我想在主 class 中创建一个函数,有点像:
Letter getRandLetter() {
Random rand = new Rand();
int pick = rand.nextInt(M.Letter.values().length);
if (pick == 0) {
return Letter.A;
} else if (pick == 1) {
return Letter.B;
} else {
return Letter.C;
}
}
我的主图是这样的:
int N = 3;
M[] new_m = new M[N]
for(int i = 0; i < N; i++) {
new_m[i] = new P(i, getRandLetter(), getRandT());
}
但是我得到这个错误:Cannot make a static reference to the non-static method
。我可以做些什么来实现我想要的?
错误是告诉做什么:
Cannot make a static reference to the non-static method
您的主要方法是静态的,从中调用的方法也应该是静态的。所以你的 getRandLetter()
和 getRandT()
方法应该是静态的。
getRandLetter()
应该是这样的:
static Letter getRandLetter() {
Random rand = new Rand();
int pick = rand.nextInt(M.Letter.values().length);
if (pick == 0) {
return Letter.A;
} else if (pick == 1) {
return Letter.B;
} else {
return Letter.C;
}
}
并且 getRandT()
也应该是静态的。
干杯,我是 java 的新手,我和我 运行 遇到了一个问题 我有三个 classes,都继承了它们之间的东西。开始我有一个 class A:
public class A{
private int index;
public A(int index) {
System.out.println("Creating an instance of A");
this.index = index;
}
}
然后我有一个 A 的子类,class M 里面有一个枚举:
public class M extends A{
public enum Letter {
A,B,C;
}
private Letter letter;
public M(int index, Letter aLetter) {
super(index);
System.out.println("Creating an instance of M");
this.letter = aLetter;
}
}
最后一个 class P , subclass of M:
public class P extends M {
private T t;
public enum T{
o,
a,
t
}
public P(int index, Letter aLetter, T aT) {
super(index,aLetter);
System.out.println("Creating an instance of P");
this.t = aT;
}
}
我想做的是创建例如class P 的 3 个对象,并将这些枚举中的每一个的值随机传递给它们。我想在主 class 中创建一个函数,有点像:
Letter getRandLetter() {
Random rand = new Rand();
int pick = rand.nextInt(M.Letter.values().length);
if (pick == 0) {
return Letter.A;
} else if (pick == 1) {
return Letter.B;
} else {
return Letter.C;
}
}
我的主图是这样的:
int N = 3;
M[] new_m = new M[N]
for(int i = 0; i < N; i++) {
new_m[i] = new P(i, getRandLetter(), getRandT());
}
但是我得到这个错误:Cannot make a static reference to the non-static method
。我可以做些什么来实现我想要的?
错误是告诉做什么:
Cannot make a static reference to the non-static method
您的主要方法是静态的,从中调用的方法也应该是静态的。所以你的 getRandLetter()
和 getRandT()
方法应该是静态的。
getRandLetter()
应该是这样的:
static Letter getRandLetter() {
Random rand = new Rand();
int pick = rand.nextInt(M.Letter.values().length);
if (pick == 0) {
return Letter.A;
} else if (pick == 1) {
return Letter.B;
} else {
return Letter.C;
}
}
并且 getRandT()
也应该是静态的。