[英]How can i return a value from a void method in java
好的,所以我有這段代碼,顯然來自render方法的“ g = gd”並沒有修改“ g”的字段值。
我如何才能使render方法修改字段g?
我想擁有一個圖形字段,以便可以使用圖形在render方法之外打印字符串,但是我真的不知道該怎么做。
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);
}
}
您不能從void方法返回值,這是void方法的目的,它可以完成並完成操作。
Java是按值傳遞的,當您傳遞引用類型時,其地址不會更改,但其屬性將受到更改的影響。
您可以嘗試從工廠類中獲取要修改的對象...但是無法使用return; 用無效的方法...
您應該使用Google並找到這種情況下的最佳做法和模式;-)
如果使用的不是void類型,則返回return,但是您可以更改全局變量的數據。 這樣您就可以實現它,或者使用其他一些數據類型...
如果您不希望方法返回值,則使用“ void”。
如果您希望它返回某些東西,則為“ void”,然后輸入要返回的類型。 例如:
public Graphics returnG(){
Graphics g = new Graphics();
return g;
}
這將返回一個名為g的圖形對象。
但是同樣,void方法不可能返回某些東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.