Как я могу вернуть значение из пустого метода в Ja va
Итак, у меня есть этот код и, очевидно, "g = gd" из метода рендеринга не изменяет значение поля "g".
Как я могу сделать так, чтобы метод render изменял поле g?
Я хочу иметь графическое поле, чтобы я мог использовать графику для печати строк вне метода рендеринга, но я действительно не знаю, как это сделать.
private Graphics g;
private BufferedImage background;
public Tutorial(Core core){
background = core.getResources().getImage(4);
}
public void render(Graphics gd) {
g = gd;
g.drawImage(background, 0, 0, null);
}
РЕДАКТИРОВАТЬ:
Хорошо, это весь класс, как я могу изменить его так, чтобы displayMessage работал? tick() вызывается перед render(), это может быть проблемой?
package com.andrewxd.spaceinvaders.levels;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import com.andrewxd.spaceinvaders.main.Core;
public class Tutorial implements Levels{
private Graphics g;
private BufferedImage background;
public Tutorial(Core core){
background = core.getResources().getImage(4);
}
public void render(Graphics gd) {
g = gd;
g.drawImage(background, 0, 0, null);
}
public void tick() {
displayMessage("Welcome", 200,200);
}
public void displayMessage(String message, int x, int y) {
g.setFont(new Font("ARIAL", Font.BOLD, 20));
g.setColor(Color.RED);
g.drawString(message, x, y);
}
public void displayMessage(String message, int x, int y, Font font) {
g.setFont(font);
g.setColor(Color.WHITE);
g.drawString(message, x, y);
}
public void displayMessage(String message, int x, int y, Font font, Color color) {
g.setFont(font);
g.setColor(color);
g.drawString(message, x, y);
}
}
4 ответа
Вы не можете вернуть значение из метода void, это цель метода void, он делает то, что делает, и завершает.
Java передается по значению, когда вы передаете ссылочный тип, его адрес не будет изменен, но его атрибуты будут затронуты изменением.
Вы можете попытаться получить объект из класса фабрики, который вы хотите изменить... Но невозможно использовать return; в пустом методе...
Вы должны использовать Google и найти лучшие практики и шаблоны для этого случая;-)
Вернуть, если используется не тип void, но вы можете изменить данные глобальной переменной. таким образом, вы можете достичь этого, или использовать какой-то другой тип данных...
"void" используется, когда вы не хотите, чтобы ваш метод возвращал значение.
Если вы хотите, чтобы он что-то возвращал, тогда вместо "void", укажите тип, который вы хотите вернуть. Например:
public Graphics returnG(){
Graphics g = new Graphics();
return g;
}
это вернет графический объект с именем g.
Но опять же, для пустого метода невозможно что-то вернуть.