eclipse Java:无法从同一个包中的不同类访问静态变量
这很奇怪,因为我有一个可以访问帧的字符类。维getWidth();但是,当我想在Map类中使用它时,eclipse在它下面加了下划线,不能给我反馈。无论如何,运行该程序都会出现java错误,说明他们找不到Map对象的X值
下面是Frame类:
package Core;
import java.awt.Dimension;
import java.awt.Rectangle;
import javax.swing.JFrame;
public class Frame
{
static int width = 800, height = 600;
static Dimension dimension;
public static void main(String[]args){
JFrame frame= new JFrame("RETRO");
frame.add(new Screen());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(width,height);
frame.setVisible(true);
frame.setResizable(false);
dimension = frame.getContentPane().getSize();
}
}
地图类:
package Core;
import java.awt.Frame;
import java.awt.Image;
import java.awt.Rectangle;
import javax.swing.ImageIcon;
import java.awt.Dimension;
public class Map
{
double x, y;
Image map;
ImageIcon background = new ImageIcon("images/Maps/maze.jpg");
public Map(){
map = background.getImage();
}
public void move(double moveX, double moveY){
x += moveX;
y += moveY;
}
//////////Gets
public Image getMap(){
return map;
}
public double getX(){
if(x<0)
x=0;
else if(x>Frame.dimension.getWidth())
x=Frame.dimension.getWidth();
return x;
}
public double getY(){
if(y<0)
y=0;
else if(y>Frame.dimension.getHeight())
y=Frame.dimension.getHeight();
return y;
}
public int getHeight(){
return map.getHeight(null);
}
public int getWidth(){
return map.getWidth(null);
}
}
我可以提供角色类,但目前它非常长且混乱。。然而,Frame这个词只用于调用Frame。维getWidth()/getHeight()
# 1 楼答案
你的名字可能与你自己的核心相冲突。框架和Java自己的Java。awt。框架
我会将您的框架类重新命名为与核心Java名称不同的名称,并且我也会避免使用静态变量
# 2 楼答案
你的
Map
类指的是java.awt.Frame
(你导入的),而不是Core.Frame
如果确实需要保留
import java.awt.Frame
,那么在引用框架类(Core.Frame
)时,只需使用框架类的完全限定名即可避免冲突,例如在getX
方法中:或者,如果您根本不需要使用
java.awt.Frame
,只需删除import
行即可# 3 楼答案
看起来java之间的导入发生了冲突。awt。框架和核心。框架
您应该在导入中添加“import static Core.Frame.dimension”,然后只使用“dimension”而不是“Frame.dimension”