2012-03-01 4 views
0

Eclipse는 비 정적 필드 인 Art.instance에 대한 정적 참조를 만들 수 없다고 말합니다. 정적 인 상황에서 Art.instance를 호출하는 이유는 무엇이라고 생각합니까?왜 정적 변수가 아닌 변수를 호출 할 수 없습니까?

TDRenderer 자체가과 같이 호출됩니다 :

renderer = new TDRenderer(); 

TDRenderer.java :

package towerDefense; 

import java.awt.Graphics; 
import java.awt.Image; 

public class TDRenderer { 

    public Art art; 

    public TDRenderer() 
    { 
     art = Art.instance; 
    } 

    public void render(Graphics g) 
    { 
     for(int i = 0; i < 32; i++) 
     { 
      for(int j = 0; j < 24; j++) 
      { 
       Image itd = (Image)(art.sprites[art.level1.tiles[i][j].type]); 
       g.drawImage(itd, itd.getWidth(null), itd.getHeight(null), null); 
      } 
     } 
    } 
} 
+0

'Art' 클래스는 어떻게 생겼습니까? – unholysampler

+0

'Art'클래스의 내용을 모른 채로는 그 질문에 답할 수 없습니다. – Taymon

+0

예외가있는 행을 지적하면 아주 잘 될 것입니다 (물론 도움을 원하면). 또한 '예술'코드를 게시하는 것이 유용 할 것입니다. – SJuan76

답변

4

그것은 당신이 정적 문맥에있어이지 않는다; instanceArt의 정적 필드가 아니지만 Art.instance으로 참조하면 정적 인 것처럼 사용하려고합니다.

0

Art클래스에서 instance 속성을 호출하고 있습니다.

정적 (즉, 클래스 변수)이 아닌 경우 Art 클래스에서 인스턴스화 된 객체 내에서 참조 될 것으로 예상되므로 값이 없습니다. 당신이 참조-수 어디서나 Art에서 수입되는 단일 값을 원하는 경우

는 다음 instance 선언의 앞에 static 접두사를 넣고 Art 파일에 대한 값을 제공합니다. 특정 Art 개체의 instance 변수에 액세스하려는 경우 개체를 만들고 해당 개체의 instance 속성을 참조해야합니다.

0
public class TDRenderer { 
    public Art art; 

     public TDRenderer() 
     { 
      art = Art.instance; 
     } 
//so on.. 

가정 1-Art.instancestatic 인스턴스이다.

그렇다면, 당신은 중복과 쓸모가 다음 public static Art art;

글쎄을 TDRenderer의 지역 변수 art를 선언해야합니다. Art.instance를 직접 참조하지 않는 것이 좋습니다.

관련 문제