的封閉實例的分配首先,我知道這個問題已經被回答,但是,我查看了所有可以找到的答案,而且都沒有幫助。'必須限定類型爲'
我在LibGDX中製作遊戲,模擬大像素物理。爲了創建不同類型的像素,我決定在我的Types
類中創建類,空白空間也將是一種像素,我將渲染爲黑色,所以我有一個Types
之間的類,名爲None
,這將是用於空虛。
在我Main
類,我創建一個包含其中包含的Types
實例的ArrayList的ArrayList:
public ArrayList<ArrayList<Types>> grid;
...
for (int y = 0; y < 151; y++) {
ArrayList<Types> row = new ArrayList<Types>();
for (int x = 0; x < 105; x++) {
row.add(Types.None);
}
grid.add(row);
}
而且,我的類型類看起來是這樣的:
package io.j4cobgarby.github;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.Vector2;
public class Types {
public static Types None = new None();
public float mass;
public Color colour;
public boolean dynamic;
public boolean conducts_electrons;
public float conducts_heat;
public Types(float mass, Color colour, boolean dynamic, boolean conducts_electrons, float conducts_heat) {
this.mass = mass;
this.colour = colour;
this.dynamic = dynamic;
this.conducts_electrons = conducts_electrons;
this.conducts_heat = conducts_heat;
}
public void getInput() {
}
public void dynamUpdate() {
}
public void staticUpdate() {
}
public void delete() {
}
public class None extends Types {
public None() {
super(0.0f, Color.BLACK, false, false, 0.0f);
}
@Override
public void getInput() {
if (Gdx.input.isKeyJustPressed(Keys.T)) {
System.out.println("T pressed");
}
}
}
}
所以,我希望是我現在有一個包含151個ArrayList的ArrayList,每個ArrayList包含105個實例Types.None
但是,這不起作用。
論Types
線10 - public static Types None = new None();
- 我得到這個錯誤:
No enclosing instance of type Types is accessible. Must qualify the allocation with an enclosing instance of type Types (e.g. x.new A() where x is an instance of Types).
這是爲什麼?我嘗試了很多東西,但我似乎無法讓它工作。
謝謝。
[爪哇 - 類型的無封閉情況foo是接近]的可能的複製(http://stackoverflow.com/questions/9560600/java-no-enclosing-instance-of-type-foo-is-可訪問) – fabian