相关疑难解决方法(0)

为什么Java不允许覆盖静态方法?

为什么不能覆盖静态方法?

如果可能,请举例说明.

java static static-methods overriding

519
推荐指数
14
解决办法
26万
查看次数

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对象进行静态变量访问?

我指着一些技巧并遇到了这个.在以下代码中:

public class TestClass1 {

    static int a = 10;

    public static void main(String ar[]){
        TestClass1 t1 = null ;
        System.out.println(t1.a); // At this line
    }
}
Run Code Online (Sandbox Code Playgroud)

t1对象是null.为什么这段代码不抛NullPointerException

我知道这不是访问static变量的正确方法,但问题是关于NullPointerException.

java static javac nullpointerexception

27
推荐指数
2
解决办法
4810
查看次数

在java中调用静态方法

可能重复:
如何在空引用上调用(静态)方法不会抛出NullPointerException?

任何人都可以解释为什么以下程序的输出被" 调用 "

public class Test4{

  public static void method(){
    System.out.println("Called");
  }

  public static void main(String[] args){
    Test4 t4 = null;
    t4.method();
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道我们可以使用类引用调用静态方法,但在这里我使用null引用调用.请澄清我的疑问

java static-methods

11
推荐指数
1
解决办法
5万
查看次数

在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
查看次数

NullPointerException或将打印静态变量的内容

我遇到了以下代码:

public class TradingSystem {

    private static String category = "electronic trading system";

    public static void main(String[] args) {
        TradingSystem system = null;
        System.out.println(system.category);
}
Run Code Online (Sandbox Code Playgroud)

输出:电子交易系统

我很惊讶没有找到NullPointerException!

Q1.它为什么不抛出NullPointerException

Q2.或者在编译时,由于类别的声明已经static使它替换系统(即对象引用),TradingSystem并且因此基本上TradingSystem.category被称为?

java static static-members nullpointerexception

10
推荐指数
1
解决办法
554
查看次数

强制方法调用null变量以抛出NullPointerException

可能重复:
如何在空引用上调用(静态)方法不会抛出NullPointerException?
Java中空引用的静态字段

我尝试了这个旧视频的代码:

class Impossible {
    public static void main(String[] args) {
        Thread t = null;
        System.out.println(t.currentThread().getName());
    }
}
Run Code Online (Sandbox Code Playgroud)

输出: main

嗯,那到底是什么?!有没有java.lang.Thread违反任何NullPointerException规则?

但是我最感兴趣的是:如何使该变量表现为抛出NullPointerException?

java null multithreading operation nullpointerexception

8
推荐指数
1
解决办法
980
查看次数

来自null的java静态字段

我在互联网上找到了这个代码,并希望有人向我解释...

public class Foo {
    static int fubar = 42;

    public static void main(String[] args) {
        System.out.println(((Foo) null).fubar);
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码编译并正常工作,输出结果42.

怎么可能fubar从一个null没有抛出变量的情况下访问变量NullPointerException

java static nullpointerexception

7
推荐指数
2
解决办法
440
查看次数

为什么在使用null引用访问静态时不会出现NullPointerException?

在下面的代码中,我们获得i了null引用的值,尽管a NPE不存在.

public class Test {
    static int i = 10;

    Test getTest() {
        return null;    
    }

    public static void main(String args[]) {
        Test t = new Test();
        System.out.println(t.getTest());  
        System.out.println(t.getTest().i);
    }
}
Run Code Online (Sandbox Code Playgroud)

产量

null
10
Run Code Online (Sandbox Code Playgroud)

java static nullpointerexception

6
推荐指数
2
解决办法
286
查看次数

如果System s = null,那么下面的输出是什么

我有以下代码.

public static void main(String args[])
  {
    System s = null;
    s.out.println("Hello");
  }
Run Code Online (Sandbox Code Playgroud)

虽然s为null,但我不明白为什么输出是Hello.谁能帮我理解这个?

java system

5
推荐指数
1
解决办法
59
查看次数

奇怪的代码输出

我偶然发现了一些非常奇怪的代码,我很惊讶不会导致错误

public class WeirdCode {

    public static int fooField = 42;

    public WeirdCode getFoo(){
        return null; 
    } 
    public static void main(String args[]) {
        WeirdCode foo = new WeirdCode();
        System.out.println(foo.getFoo().fooField); 
    }
}
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,它打印出42!谁能解释一下?

java

5
推荐指数
1
解决办法
104
查看次数

如何从空引用访问静态变量?

最近我正在浏览javarevisited页面并找到一段代码,要求读者确定它的输出是什么......

虽然我得到了输出,但我对结果不满意(因为我不知道如何从空引用访问静态成员).背景中发生了什么?

public class StaticDEMO {

    private static String GREET = "Hello";

    public static void main(String[] args) {
        StaticDEMO demo = null;
        System.out.println(demo.GREET);
        // TODO code application logic here
    }
}
Run Code Online (Sandbox Code Playgroud)

java static nullreferenceexception

4
推荐指数
1
解决办法
1861
查看次数