我想创建一个具有相同内部类的类,更具体地说是这样的:
class PassengerComponent extends PlaneComponent
{
PassengerComponent InnerPC ;
int inner ; // checks if PassengerComponent has an inner class
passengerComponent继承自:
class PlaneComponent
{
String Description ;
}
问题是内部类应该随机填充,这意味着 有时乘客组件会有一个内部组件,有时不会! 我试图这样做的方法如下:
int random = (int )(Math.random() * 1 + 0 );
if( random == 0)
{
PassengerComponent PC1 = new PassengerComponent("Passenger Component #1" , 0);
}
else
{
PassengerComponent PC1 = new PassengerComponent("Passenger Component #1" , 1);
}
PC1.ready_check(Sc, Cg);
乘客构造函数如下:
public PassengerComponent( String D , int i)
{
Description = D ;
System.out.println( " PassengerComponent: " + Description + " Has Been Created ");
switch (i) {
case 0:
InnerPC = new PassengerComponent( " Inner Passenger Component #1 " , 2 );
inner = 1 ;
break;
case 1:
inner = 0 ;
break ;
case 2:
break;
default:
break;
}
}
}
调用构造函数并且输出消息似乎没问题,但是当调用PC1.ready_check时,编译器无法找到我创建的PC1! (ready_check对任何想知道的人都没有任何问题)
很抱歉很长的问题,有什么想法吗?
答案 0 :(得分:1)
它与内部类或PassengerComponent
无关,只与范围可变。
由于PC1
在if/else
块中声明 ,因此只能在此块中知道。
如果您想在PC1
阻止后使用if/else
,请将其声明为以上级别:
int random = (int )(Math.random() * 1 + 0 );
PassengerComponent PC1;
if( random == 0)
{
PC1 = new PassengerComponent("Passenger Component #1" , 0);
}
else
{
PC1 = new PassengerComponent("Passenger Component #1" , 1);
}
PC1.ready_check(Sc, Cg);