簡體   English   中英

如何從Java中的void方法返回值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM