看上去一个很简单的问题,结果却不是想象中的那样。良好的编码习惯是多么的重要啊。
测试的代码如下:
public class TestPrintStream1 {
public static void main(String[] args) {
Class c = TestPrintStream1.class;
try {
Object o = c.newInstance();
if (o instanceof TestPrintStream1)
TestPrintStream1 tt = (TestPrintStream1) o;// 这里为什么会报错呢,说tt 和 TestPrintStream1不能不解析
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
那一行为什么会报错呢?if语句后面不是允许不加大括号吗?
if ()
后面不使用花括号时,里面不能出现声明,因为那个涉及到作用域,而没有花括号又没有作用域了。考试大编辑理解:
boolean ok = true;
if(ok)
MyClass c = new MyClass();
这样也是不允许的。
改成
MyClass c = null;
if(ok)
c = new MyClass();
这样是可以的
这个代码问题和 instanceof 没有任何关系
Java 把 Test tt = new Test(); 当两条语句看待了相当于 Test tt; tt = new Test();
该文章转载自无忧考网:http://www.51test.net
测试的代码如下:
public class TestPrintStream1 {
public static void main(String[] args) {
Class c = TestPrintStream1.class;
try {
Object o = c.newInstance();
if (o instanceof TestPrintStream1)
TestPrintStream1 tt = (TestPrintStream1) o;// 这里为什么会报错呢,说tt 和 TestPrintStream1不能不解析
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
那一行为什么会报错呢?if语句后面不是允许不加大括号吗?
if ()
后面不使用花括号时,里面不能出现声明,因为那个涉及到作用域,而没有花括号又没有作用域了。考试大编辑理解:
boolean ok = true;
if(ok)
MyClass c = new MyClass();
这样也是不允许的。
改成
MyClass c = null;
if(ok)
c = new MyClass();
这样是可以的
这个代码问题和 instanceof 没有任何关系
Java 把 Test tt = new Test(); 当两条语句看待了相当于 Test tt; tt = new Test();
该文章转载自无忧考网:http://www.51test.net