从内部 Class 的对象访问外部 class 函数
Access outer class function from Object of Inner Class
我知道有人提出了与此问题相关的类似问题,但是我无法解决我的问题。我试图将我的问题简化为以下代码 -
class Outer
{
Outer()
{}
class Inner
{
Inner()
{}
}
void func()
{
System.out.println("Outer");
}
}
public class Nested
{
public static void main(String args[])
{
Outer oo = new Outer();
Outer.Inner ii = oo.new Inner();
// ii.func(); I know this won't work
}
}
我可以从内部 class "ii" 的对象调用外部 class 函数 "func()" 吗??如果是,如何?
使用内部 class 中的 Outer.this.func()。
请注意,您只能从内部 class 执行此操作,而不能从外部执行此操作。
简短回答:对 Outer.this
的引用是 Inner
中的 private
,因此您无法从 Inner
的实例访问对 Outer
实例的引用=].
您可以这样导出此引用:
class Outer {
Outer() {
}
class Inner {
Inner() {
}
public Outer getOuter() {
return Outer.this;
}
}
void func() {
System.out.println("Outer");
}
}
那么你可以简单地做:
ii.getOuter().func();
class Outer {
Outer() {}
class Inner {
Inner() {}
void callFunc() {
Outer.this.func();
}
}
void func() {
System.out.println("Nested");
}
}
public class Nested {
public static void main(String args[]) {
Outer.Inner ii = new Outer().new Inner();
ii.callFunc();
// ii.func(); I know this won't work
}
}
这对你有用
package com;
class Outer
{
Outer()
{}
class Inner
{
Inner()
{}
public Outer g(){
return Outer.this;}
}
void func()
{
System.out.println("Outer");
}
}
public class Test1
{
public static void main(String args[])
{
Outer oo = new Outer();
Outer.Inner ii = oo.new Inner();
ii.g().func();
}
}
我知道有人提出了与此问题相关的类似问题,但是我无法解决我的问题。我试图将我的问题简化为以下代码 -
class Outer
{
Outer()
{}
class Inner
{
Inner()
{}
}
void func()
{
System.out.println("Outer");
}
}
public class Nested
{
public static void main(String args[])
{
Outer oo = new Outer();
Outer.Inner ii = oo.new Inner();
// ii.func(); I know this won't work
}
}
我可以从内部 class "ii" 的对象调用外部 class 函数 "func()" 吗??如果是,如何?
使用内部 class 中的 Outer.this.func()。 请注意,您只能从内部 class 执行此操作,而不能从外部执行此操作。
简短回答:对 Outer.this
的引用是 Inner
中的 private
,因此您无法从 Inner
的实例访问对 Outer
实例的引用=].
您可以这样导出此引用:
class Outer {
Outer() {
}
class Inner {
Inner() {
}
public Outer getOuter() {
return Outer.this;
}
}
void func() {
System.out.println("Outer");
}
}
那么你可以简单地做:
ii.getOuter().func();
class Outer {
Outer() {}
class Inner {
Inner() {}
void callFunc() {
Outer.this.func();
}
}
void func() {
System.out.println("Nested");
}
}
public class Nested {
public static void main(String args[]) {
Outer.Inner ii = new Outer().new Inner();
ii.callFunc();
// ii.func(); I know this won't work
}
}
这对你有用
package com;
class Outer
{
Outer()
{}
class Inner
{
Inner()
{}
public Outer g(){
return Outer.this;}
}
void func()
{
System.out.println("Outer");
}
}
public class Test1
{
public static void main(String args[])
{
Outer oo = new Outer();
Outer.Inner ii = oo.new Inner();
ii.g().func();
}
}