可以在java中使用静态类型参数声明方法吗?如果不是,为什么?

时间:2016-05-20 05:26:17

标签: java

可以在java中使用静态类型参数声明一个方法吗?如果不是,为什么?

前:

class A
{
    void m(static int x)
    {
         System.out.println(x);
    }
}

3 个答案:

答案 0 :(得分:1)

我不相信这是可能的,我不能想到任何有效的用例。

将方法设置为静态以实现单例模式可能是有意义的。

class A
{
    static void m(int x)
    {
         System.out.println(x);
    }
}

然后可以使用它而无需按如下方式实例化A:

A.m(1);

或者,您可能希望使x immutable以避免意外行为。这将使用“final”完成,如下所示:

class A
{
    void m(final int x)
    {
         System.out.println(x);
    }
}

但是制作x static是没有用的。

答案 1 :(得分:0)

不会不允许(编译器错误)并且它也有意义。 static关键字表示变量在其作用域中只有一个实例,该实例在该作用域外是不可见的。这对于函数参数都没有意义。

§6.7.5.3/ 2:“在参数声明中出现的唯一存储类说明符是寄存器。”

答案 2 :(得分:0)

  

静态成员被视为类级别成员并被加载   在类加载期间在内存中,这意味着它是可取的   不应该依赖于类实例。

因此,您的类具有成员方法m,需要传递parameter来执行方法体。

  

如果你为它声明一个没有任何意义的静态成员   因为它在方法之外没有任何存在,所以类没有   有关它的信息加载时间严重违反了所有规定   上方。