我如何从java中的void方法返回一个值

时间:2014-02-04 07:53:38

标签: java return void

好的,所以我有这个代码,很明显,渲染方法中的“g = gd”不会修改“g”的字段值。

我怎样才能使渲染方法修改字段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可以工作? 在render()之前调用tick(),这可能是个问题吗?

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 个答案:

答案 0 :(得分:3)

  • 你不能从void方法返回一个值,这就是void方法的目的,它完成了它的工作并完成了它。

  • Java是按值传递,当您传递引用类型时,其地址不会更改,但其属性将受更改影响。

答案 1 :(得分:0)

您可以尝试从要修改的工厂类中获取对象...但是无法使用return;在虚空方法......

您应该使用谷歌并找到此案例的最佳做法和模式; - )

答案 2 :(得分:0)

如果在void类型之外使用,则返回

,但您可以更改全局变量的数据。这样你就可以实现它,或者使用其他一些数据类型......

答案 3 :(得分:0)

当您不希望方法返回值时,使用

“void”。

如果你想要它返回一些东西而不是“无效”,请输入你想要返回的类型。例如:

public Graphics returnG(){
 Graphics g = new Graphics();
return    g;

}

这将返回名为g。

的图形对象

但同样,void方法无法返回某些内容。