「java内部方法」java 内部方法

博主:adminadmin 2022-12-03 14:45:07 70

今天给各位分享java内部方法的知识,其中也会对java 内部方法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java 主方法怎么调用内部类的方法

System.out.println(x);//这个是55

System.out.println(In.x);//这个是9

楼主这两行是对的,楼上是不用兄弟认为人家这儿错了?

1,后面那个是无法做到的那个x是方法 的局部变量,在进入方法时被推到栈里,方法结束后就出栈了。除非有方式可以跑一个在主方法中的线程监控当前栈中变量,就像是Debug一样,我也研究好久这个,不过没发现有。

2,

也像1一样没有侵入性,你可以用字节码框架去操作类,动态地改变方法的行为,也就是说你可以在main方法中用程序语言去改变doit(x)方法里所做的事情。

3,

再侵入点儿,你可以传进那个doit(int)方法一个Callback, 你明白我意思?给你看个回调式:

public class HelloJava{

private interface Listener{

public void listenDoit(int x);

}

private static int x=55;

private class In{

private Listener listener;

private static final int x=9;

public In(Listener listener){this.listener=listener;}

public void doit(int x){

listener.listenDoit(x);

x=6;//这个X和上一行的应该是同一个吧?怎么在主方法里输出这个量?

listener.listenDoit(x);

HelloJava.this.x++;

}

}

public static void main(String[] args){

System.out.println(x);//这个是55

System.out.println(In.x);//这个是9

In in =new HelloJava().new In(new Listener(){

@Override

public void listenDoit(int x) {

System.out.println(x);

}});

in.doit(0);

System.out.println(x);//这个是55

System.out.println(In.x);//这个是10

}

}

还有许多方式可以做到,比如代理模式等等,不过都大同小异。该方法好处是不改变方法的原定义模型。如返回值从void改成int,如果doit的返回值本身就是String,要返回个其他的东西,怎么去改变返回值完成?

另外运行一下会发现最后两行输出不是55

10,

而是56,

9,你就知道HelloJava.this.x++;做的是什么了。

4,然后就是楼上朋友们都说的方式,返回值。

java内部类的方法内部类

把类放在方法内

class Outer {

public void doSomething(){

class Inner{

public void seeOuter(){

}

}

}

}

(1)、方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化。

(2)、方法内部类对象不能使用该内部类所在方法的非final局部变量。

因为方法的局部变量位于栈上,只存在于该方法的生命期内。当一个方法结束,其栈结构被删除,局部变量成为历史。但是该方法结束之后,在方法内创建的内部类对象可能仍然存在于堆中!例如,如果对它的引用被传递到其他某些代码,并存储在一个成员变量内。正因为不能保证局部变量的存活期和方法内部类对象的一样长,所以内部类对象不能使用它们。

下面是完整的例子:

class Outer {

public void doSomething(){

final int a =10;

class Inner{

public void seeOuter(){

System.out.println(a);

}

}

Inner in = new Inner();

in.seeOuter();

}

public static void main(String[] args) {

Outer out = new Outer();

out.doSomething();

}

}

java内部调用内部方法的问题

Java内部调用内部方法主要是通过内部类实现。Java内部类分两种,成员内部类和方法内部类。

代码如下:

1.成员内部类

/**

 * 成员内部类

 */

public class Outer {

    private int outer = 1;

 

    class Inner {

        public void show() {

            System.out.println("outer =" + outer);

        }

    }

 

    public static void main(String[] args) {

        Outer.Inner in = new Outer().new Inner();

        in.show();

 

    }

 

}

 

2.方法内部类

/**

 * 方法内部类

 * 

 */

public class Outer2 {

    private int outer = 1;

 

    public void showOut() {

 

        class Inner {

            public void show() {

                System.out.println("outer =" + outer);

            }

        }

        new Inner().show();

    }

 

    public static void main(String[] args) {

        Outer2 in = new Outer2();

        in.showOut();

 

    }

java方法内部 能不能写方法

肯定不行的,比如public void h(){ void f(){}}这样的语句是错误的,只能在方法内部调用其他方法,不能在方法内部定义方法,也就是不支持内部方法。

关于java内部方法和java 内部方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-03,除非注明,否则均为首码项目网原创文章,转载请注明出处。