相关疑难解决方法(0)

Java中空引用的静态字段

staticJava中的成员(static字段或static方法)与其各自的类相关联,而不是与此类的对象相关联.以下代码尝试访问null引用上的静态字段.

public class Main
{
    private static final int value = 10;

    public Main getNull()
    {
        return null;
    }

    public static void main(String[] args)
    {
        Main main=new Main();
        System.out.println("value = "+main.getNull().value);
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然main.getNull()返回null,但它可以工作和显示value = 10.这段代码是如何工作的?

java static

117
推荐指数
2
解决办法
7648
查看次数

为什么不通过实例调用静态方法为Java编译器的错误?

我相信你们都知道我的意思 - 代码如下:

Thread thread = new Thread();
int activeCount = thread.activeCount();
Run Code Online (Sandbox Code Playgroud)

引发编译器警告.为什么不是错误?

编辑:

要明确:问题与Threads无关.我意识到在讨论这个问题时经常给出Thread示例,因为它们可能真的搞砸了它们.但问题确实是这样的使用总是无稽之谈,你不能(胜任地)写出这样的电话并且意味着它.这种类型的方法调用的任何例子都是barmy.这是另一个:

String hello = "hello";
String number123AsString = hello.valueOf(123);
Run Code Online (Sandbox Code Playgroud)

这使得它看起来好像每个String实例都带有"String valueOf(int i)"方法.

java methods static

75
推荐指数
4
解决办法
3万
查看次数

在Java中使用NULL对象访问静态字段

以下简单的代码片段工作正常,并使用null对象访问静态字段.

final class TestNull
{
    public static int field=100;

    public TestNull temp()
    {
        return(null);
    }
}

public class Main
{
    public static void main(String[] args)
    {
        System.out.println(new TestNull().temp().field);
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,System.out.println(new TestNull().temp().field);静态字段字段与NULL对象关联的语句new TestNull().temp()仍然返回正确的值100,而不是在Java中抛出空指针异常!为什么?

java

10
推荐指数
2
解决办法
2126
查看次数

标签 统计

java ×3

static ×2

methods ×1