0

我有一种情况,我必须这样做

 class A{

    B b;

    class B extends ContainerView{

    public B(int x,int y, String s1, Styring s2){
    super(x,y,200,500);

    }
    }

    class C{

    void m(){
    if(...){
    B b=new B(x,y,raj,esh);
    b.something....
    else
    B b=new B(x,y,esh,raj);

问题是 x 和 y 对 C 类是未知的,如果我在 C 类中将它声明为 int x,y 那么它的行为不正确......

该怎么办?提前致谢

4

2 回答 2

0

看看Java内部类和静态嵌套类

class OuterClass {
    ...
    class InnerClass {
        ...
    }
}

OuterClass.InnerClass innerObject = outerObject.new InnerClass();

于 2013-09-17T05:28:26.660 回答
0

这里的问题是您对类的使用或类构造函数 API 是错误的。

您在呼叫时提供了两个选项public B(int x,int y, String s1, String s2)x并且y是未知的。

第一个选项是在那里传递 null 或默认值(因为在这种情况下,参数是 int,默认值可以是 0 或类似 -1 的值)。您正在创建的类应该知道这些值可能为 null 或包含无效/默认值。然而,这是一个补丁。

如果设计得当,并且xy参数是可选的,它应该包含一个构造函数来反映这一点public B(String s1, String s2)

第二个选项是不在那里创建该特定对象,如果x并且y是未知的并且这些参数不是可选的。您将其放置在不存在用于创建对象的关键上下文参数的错误位置。

于 2013-09-17T05:34:59.440 回答