我有一种情况,我必须这样做
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,那么它的行为是不正确的......
怎么办?在此先感谢
答案 0 :(得分:0)
查看Java inner class and static nested class
class OuterClass {
...
class InnerClass {
...
}
}
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
答案 1 :(得分:0)
这里的问题是您对类的使用或类构造函数API是错误的。
在致电public B(int x,int y, String s1, String s2)
时,您提供了两个选项,x
和y
未知。
第一个选项是在那里传递null或者一个默认值(因为在这种情况下参数是int,默认值可以是0或类似-1)。您正在创建的类应该知道这些值可能为null或包含无效/默认值。但这是一个补丁。
如果设计得当且x
和y
参数是可选的,则应包含一个反映public B(String s1, String s2)
第二个选项是不在那里创建该特定对象,如果x
和y
未知且这些参数不是可选的。您已将其放置在不存在用于创建对象的关键上下文参数的错误位置。