【发布时间】:2016-02-26 11:56:11
【问题描述】:
我想创建一个类,它具有相同的内部类,更具体地说是这样的:
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)来表示它是否有内部?在这种情况下,它是二进制的,所以布尔值
hasInner很好,但 id 仍然更喜欢 Enum 类型安全性和可扩展性。另外,在此过程中,让我们更改 switch 语句以使用 Maps。
标签: java constructor inner-classes