主题:定义在if语句中的内部类和定义在代码块{}中的内部类区别
今天做《Think in JAVA》题时遇到了一些令我一解的事,想了很久,还是有点不明白。现在把代码贴出来希望哪位大虾能指点一、两。
这段代码是内部类定义在if语句块中,是不是定义在if语句块中之后,他就不能够用Return语句来返回内部类了吗?
package test14;
interface Instrument{
void fun();
}
public class Test14{
boolean flag;
Test14(boolean b){
flag=b;
}
public Instrument getInterface(){
if(flag){
class Inner implements Instrument{
public void fun(){
System.out.println("This is Inner fun");
}
}
//Instrument i=new Inner();
//i.fun();
return new Inner(); //======这样子去返回会出现异常========
}
}
public static void main(String[] args){
boolean flag=true;
new Test14(flag).getInterface();
}
}
异常显示:
Test14.java:16: cannot resolve symbol
symbol : class Inner
location: class test14.Test14
return new Inner();
这段代码是内部类定义在语句块{}中,但他能够用Return语句来返回内部类
package test14_1;
interface Instrument{
void fun();
}
public class Test14_1{
public Instrument getInterface(){
{
class Inner implements Instrument{
public void fun(){
System.out.println("This is Inner fun");
}
}
return new Inner();//====这里用Return语句就能返回了。
}
}
public static void main(String[] args){
Instrument i=new Test14_1().getInterface();
i.fun();
}
}
想了很久还是不明白if语句内定义内部类和代码块(不知道{}是不是读代码块)中定义到底有什么区别
这段代码是内部类定义在if语句块中,是不是定义在if语句块中之后,他就不能够用Return语句来返回内部类了吗?
package test14;
interface Instrument{
void fun();
}
public class Test14{
boolean flag;
Test14(boolean b){
flag=b;
}
public Instrument getInterface(){
if(flag){
class Inner implements Instrument{
public void fun(){
System.out.println("This is Inner fun");
}
}
//Instrument i=new Inner();
//i.fun();
return new Inner(); //======这样子去返回会出现异常========
}
}
public static void main(String[] args){
boolean flag=true;
new Test14(flag).getInterface();
}
}
异常显示:
Test14.java:16: cannot resolve symbol
symbol : class Inner
location: class test14.Test14
return new Inner();
这段代码是内部类定义在语句块{}中,但他能够用Return语句来返回内部类
package test14_1;
interface Instrument{
void fun();
}
public class Test14_1{
public Instrument getInterface(){
{
class Inner implements Instrument{
public void fun(){
System.out.println("This is Inner fun");
}
}
return new Inner();//====这里用Return语句就能返回了。
}
}
public static void main(String[] args){
Instrument i=new Test14_1().getInterface();
i.fun();
}
}
想了很久还是不明白if语句内定义内部类和代码块(不知道{}是不是读代码块)中定义到底有什么区别