Жаль, что я могу сказать, что я новичок, но, увы, я просто очень ржавый. Я пытаюсь сделать несколько простых программ, чтобы вернуться к основам, которые я узнал пару лет назад. На данный момент у меня есть два отдельных класса: Entity and Game. Я создал объект сущности игрока, и я хотел бы получить доступ к его параметрам x и y в разных методах и, в конечном итоге, к различным классам.Как ссылаться на параметры объекта в других классах в java
Мой первый инстинкт состоял в том, чтобы просто использовать «player.x», но, к сожалению, он работает только в одном классе и только с методами void. Если я попытаюсь использовать это где-нибудь еще, я продолжаю получать ошибку «NullPointerException» в строках, где я пытаюсь ссылаться на любой параметр с плеера. Любые советы о том, как ссылаться на позиции x и y без этой ошибки, или даже просто знать, почему ее единственное, что бросается в непустые методы (как в идеале я хочу использовать их при вычислении в методе float), было бы очень оценили. Это моя сущность класс:
public class Entity {
public float x; //x position
public float y; //y position
public Entity(float x, float y){
this.x = x;
this.y = y;
}
//entity methods
}
Это моя игра класс:
public class Game{
public static Entity player;
public static float posX = 2f;
public static float posY = 2f;
public Game(){
player = new Entity(posX, posY);
}
public static float test(){
float newX = player.x - 2f; //I would get the error here for example
return newX;
}
//Game methods
}
Спасибо!
EDIT
Изменен класс игры, как предложено, по-прежнему получать ту же ошибку.
public class Game {
public Entity player;
public float posX = 2f;
public float posY = 2f;
public float y = test();
public Game() {
player = new Entity(posX, posY);
}
public float test() {
float newX = player.x - 2f; //I would get the error here for example
return newX;
}
public void print() {
System.out.println(y);
}
public static void main(String[] args) {
Game game = new Game();
game.print();
}
}
Какая ошибка у вас? –
java.lang.NullPointerException – user6154145
Нет причин, по которым ошибка не должна возникать ни в методе void, ни в не-void. Единственное, что изменяет пустота, - это не вернуть что-то, так что, возможно, вы просто пропустили (или не удалили) оператор return, но это не связанная с этим проблема. –