英文:
Need to access a field present inside a private inner class
问题
class OuterClass {
// The below object will be initiated somewhere within
private OuterClass.InnerClass innerClassObj;
private class InnerClass {
{
int innerClassVariable;
}
}
}
class SomeOtherClass {
public static void main(String args[])
{
OuterClass outerClassObj = new OuterClass();
}
}
我需要使用在OuterClass
中的innerClassObj
来访问InnerClass
中的字段innerClassVariable
,该字段在SomeOtherClass
中。
英文:
class OuterClass {
// The below object will be initiated somewhere within
private OuterClass.InnerClass innerClassObj;
private class InnerClass {
{
int innerClassVariable;
}
}
}
class SomeOtherClass {
public static void main(String args[])
{
OuterClass outerClassObj = new OuterClass();
}
}
I need to access the field 'innerClassvariable' present in 'InnerClass' Using 'innerClassObj' present in 'OuterClass' from 'SomeOtherClass'
答案1
得分: 0
你使用块作用域对 innerClassVariable
进行了作用域限定,它在 InnerClass
外部不可见。这就好像你在方法内部创建了一个局部变量...
- 去除(scope)括号。
- 在
OuterClass
内部实例化一个新的InnerClass
实例。 - 创建一种方法来访问内部类的变量。
class OuterClass {
private OuterClass.InnerClass innerClassObj;
private class InnerClass {
//{
protected int innerClassVariable = 1; // 设置为某个值...
//}
}
public OuterClass() {
this.innerClassObj = new InnerClass(); // 实例化...
}
public int getInnerClassVariable() {
return innerClassObj.innerClassVariable; // 有一种方法来访问这个值...
}
}
class SomeOtherClass {
public static void main(String args[]) {
OuterClass outerClassObj = new OuterClass();
int value = outerClassObj.getInnerClassVariable();
System.out.println(value); // 1
}
}
英文:
You scoped innerClassVariable
with block scoping, it will not be visible outside of the InnerClass
. It it as if you created a local variable inside a method...
- Remove the (scope) parentheses.
- Instantiate a new instance of the
InnerClass
insideOuterClass
- Create a way to access the variable of the inner-class
class OuterClass {
private OuterClass.InnerClass innerClassObj;
private class InnerClass {
//{
protected int innerClassVariable = 1; // Set to something...
//}
}
public OuterClass() {
this.innerClassObj = new InnerClass(); // Instantiate...
}
public int getInnerClassVariable() {
return innerClassObj.innerClassVariable; // Have a way to access the value...
}
}
class SomeOtherClass {
public static void main(String args[]) {
OuterClass outerClassObj = new OuterClass();
int value = outerClassObj.getInnerClassVariable();
System.out.println(value); // 1
}
}
专注分享java语言的经验与见解,让所有开发者获益!
评论