英文:
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
InnerClassinsideOuterClass - 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语言的经验与见解,让所有开发者获益!

评论