如何将null转换为Throwable super((Throwable)null);

时间:2016-04-13 07:44:47

标签: java

这个问题只是让我理解这个概念。如何将null转换为(Throwable)? null不是一个类吧?这个问题显然是愚蠢的。

我知道:

public class SuperClass{
    int id = 0;
    public SuperClass(int id){
        this.id = id;
    }
}

public class SubClass extends SuperClass{
    public SubClass(int id) {
        super(id);
    }       
}

public class Tester{
    SubClass sub = new SubClass(1);
    SuperClass s = new SuperClass(2);
    SuperClass s1 = new SubClass(3);

    public Tester(){
        if(s1 instanceof SubClass){
            //true
            SubClass subClass = (SubClass) s1;
        }
    }       
}`

4 个答案:

答案 0 :(得分:1)

需要注意的关键点是,在所有结果再次为null之后,您可以将null强制转换为任何引用类型。

答案 1 :(得分:1)

null不是一种类型。它在概念上可以与任何类的实例相比

String s = (String)null;
Integer i = (Integer)null;

答案 2 :(得分:1)

  

如何将null转换为(Throwable)? null不是一个类吧?

null没有类型。 null可以转换为任何类或接口类型。它不能被铸造成一个原始的。

Throwablejava.lang

包中的一个类

你不能施放类,只能引用。

String s = "Hello";

此处变量s引用,不是类或对象,甚至也不是String

Throwable t = new Throwable();

此处变量t是对Throwable的引用,但可以设置为null;

Throwable t = null; // the reference doesn't point to any object.

答案 3 :(得分:0)

正如其他人所写,你可以将null转换为所有内容。

通常,您不需要,您可以写:

AUTOINCREMENT PRIMARY KEY

没有把演员放在那里。

这种演员阵容有意义的唯一地方是:

a)如果你想确保调用一个特定的方法,比如:

String nullString = null;

如果你输入

,它会有所作为
void foo(String bar) {  ... }
void foo(Object bar) {  ... }

b)如果您打算使用IDE生成代码;例如,我通常编写单元测试,如:

foo((String) null) vs. foo(null)

我在做TDD;这意味着班级" MyClassUnderTest"可能还没有存在。通过写下该代码,我可以使用我的IDE首先生成新类;然后生成一个构造函数接受一个" Whatever"论点。