Java 为什么Toast.makeText(…)和toastObj.makeText(…)的运行方式不同?

Java 为什么Toast.makeText(…)和toastObj.makeText(…)的运行方式不同?,java,android,Java,Android,我是新来的,如果这是一个糟糕的问题,我道歉。但是我想知道这两个版本的代码之间的区别 1) 这一个可以让烤面包瞬间改变 public Toast toast; public void showToast(String text) { if (toast != null) { toast.cancel(); } toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG

我是新来的,如果这是一个糟糕的问题,我道歉。但是我想知道这两个版本的代码之间的区别

1) 这一个可以让烤面包瞬间改变

public Toast toast;
public void showToast(String text)
{
    if (toast != null)
    {
        toast.cancel();
    }
    toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG);
    toast.show();
}
public Toast toast;
public void showToast(String text)
{
    if (toast != null)
    {
        toast.cancel();
    }
    toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();
}
2) 这个不会瞬间改变

public Toast toast;
public void showToast(String text)
{
    if (toast != null)
    {
        toast.cancel();
    }
    toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG);
    toast.show();
}
public Toast toast;
public void showToast(String text)
{
    if (toast != null)
    {
        toast.cancel();
    }
    toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();
}
为什么它必须是Toast class.makeText而不是Toast object.makeText? 还是因为show()方法必须分开? 我还不熟悉Java和Android,有人能解释一下两者的根本区别吗?提前感谢。

这是因为makeText()来自Toast类,该类作为

import android.widget.Toast;  
因此,它是一个静态方法,因此需要通过类名调用它

不必分开

所以

将起作用。

实际上
makeText()
方法的
Toast
类是一个静态方法

因此,如果我们必须访问一个静态方法,我们必须通过
ClassName.method()
调用该方法


在这里,我们还在Toast类中进行操作,因为
makeText()
是一个静态方法。

fyi,if将永远不会被输入,即“Toast”将始终为null。它已声明但未实例化。如何
toast!=null
一旦通过,它将始终为null。还有,这是如何使你的应用程序不会崩溃的,因为它应该是
makeText()
声明为
静态的
,[参见文档](,int,int),所以它没有被类的实例化引用。Oops感谢你指出,Toast声明实际上是全局的,已经做出了可能的更改,与Beat me的重复。基本上,静态/命名空间与instance@oooyaya是:)据我所知,对象仍然可以调用静态方法,但为什么它不能以相同的方式运行呢?