首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在同一活动中从静态内部类调用非静态方法

在同一活动中,从静态内部类调用非静态方法可以通过以下步骤实现:

  1. 首先,在同一活动中创建一个静态内部类。静态内部类是嵌套在外部类中的一个独立的类,可以直接访问外部类的静态成员和方法。
  2. 在静态内部类中,如果需要调用外部类的非静态方法,需要先创建外部类的实例对象。
  3. 在静态内部类中,通过外部类的实例对象调用非静态方法。

下面是一个示例代码:

代码语言:txt
复制
public class OuterClass {
    private int outerField;

    public void outerMethod() {
        // 非静态方法
    }

    public static class StaticInnerClass {
        public void innerMethod() {
            OuterClass outer = new OuterClass();
            outer.outerMethod(); // 调用外部类的非静态方法
        }
    }
}

在上面的示例中,StaticInnerClass 是一个静态内部类,它可以直接访问外部类 OuterClass 的静态成员和方法。在 innerMethod 方法中,我们创建了外部类的实例对象 outer,然后通过该对象调用了外部类的非静态方法 outerMethod

这种方式可以实现在同一活动中从静态内部类调用非静态方法的需求。静态内部类可以作为外部类的一个辅助类,用于封装一些与外部类相关的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java静态方法不能调用静态方法的原因

如图,是Java静态代码和实例对象互相调用的规则,我们接下来就讲讲为什么在Java静态方法不可以调用静态代码呢。...静态方法不依赖于对象的调用,它是通过‘类名.静态方法名’这样的方式来调用的。而对于静态方法,在对象创建的时候程序才会为其分配内存,然后通过类的对象去访问静态方法。...因此在对象未存在时静态方法也不存在,静态方法自然不能调用一个不存在的方法。...(1)首先,我们可以试一下去掉static,这里不会编译错误,但是运行时会抛出空指针异常,原因是什么呢,原因就是类似于上面说的静态方法不能调用静态方法的原因了。...(3)不能用一个值为null的引用类型变量来调用静态方法,这样会抛出空指针异常,但是静态方法可以被一个值为null的引用类型变量调用而不会抛出空指针异常。

5.5K50

【Java SE学习】Day6 JavaSE面向对象(下)看着三篇就够了

当修改其中一个对象静态属性时,不会导致其他对象同样的属性值的修改。 静态变量:我们创建了类的多个对象,多个对象共享同一静态变量。...     静态方法,既可以调用静态方法或属性,也可以调用静态方法或属性 static的注意点: 在静态方法,不能使用this关键字、super关键字 关于静态属性和静态方法的使用,大家都从生命周期的角度去理解...,则按照声明的先后顺序执行 静态代码块可以调用静态的属性、静态方法,或静态的属性、静态方法 注意:实例化子类对象时,涉及到父类、子类静态代码块、静态代码块、构造器的加载顺序: 由父及子,...内部类的分类: 成员内部类静态静态 ) vs 局部内部类(方法、代码块、构造器) 理解 成员内部类的理解: 一方面,作为外部类的成员: 调用部类的结构;可以被static修饰;可以被4种不同的权限修饰...(); Person.Bird bird = p.new Bird(); //如何在成员内部类调用部类的结构?

37330

来了来了它来了,100条必背JAVA知识点(下)

静态方法,只能调用静态方法或属性。静态方法,既可以调用静态方法或属性,也可以调用静态方法或属性。 70、在静态方法,不能使用this关键字、super关键字(生命周期)。...⑥静态代码块只能调用静态的属性、静态方法,不能调用静态的结构 73、静态代码块使用说明: ①内部可以输出语句 ②随着对象的创建而执行 ③每创建一个对象,就执行一次静态代码块 ④作用:可以在创建对象时...,对对象的属性等进行初始化 ⑤如果一个类定义了多个静态代码块,则按照声明的先后顺序执行 ⑥静态代码块可以调用静态的属性、静态方法,或静态的属性、静态方法 74、实例化子类对象时,涉及到父类...⑤如何在子类(或实现类)的方法调用父类、接口中被重写的方法。 86、内部类的分类:成员内部类静态静态 )、局部内部类(方法、代码块、构造器)。...言外之意,不使用final,就可以被继承 可以被abstract修饰 88、如何在部类创建成员内部类的对象?(静态的,静态的) 89、如何在成员内部类调用部类的结构?

66310

Java 快速入门,学习笔记(一)

静态方法: 被 static 修饰的方法静态方法静态方法不依赖于对象,不需要将类实例化便可以调用,由于不实例化也可以调用,所以不能有 this,也不能访问静态成员变量和静态方法。...但是非静态成员变量和静态方法可以访问静态方法。...默认 √ √ 默认是什么修饰符都不加,默认在当前类中和同一包下都可以访问和使用。 protected √ √ √ protected修饰的属性或者方法,对同一的类和所有子类可见。...静态部类是 static 修饰的内部类,这种内部类的特点是: 静态部类不能直接访问外部类静态成员,但可以通过 new 外部类().成员 的方式访问。...同一个包的类名字是不同的,不同的包的类的名字是可以相同的,当同时调用两个不同包相同类名的类时,应该加上包名加以区别。 包也限定了访问权限,拥有包访问权限的类才能访问某个包的类。

31230

Java笔记

.class 文件: Outer.class,Outer$Inner.class{} 5.成员内部类不能存在任何 static 的变量和方法,可以定义常量: (1).因为静态部类是要依赖于外部类的实例...,而静态变量和方法是不依赖于对象的,仅与类相关, 简而言之:在加载静态域时,根本没有外部类,所在在静态部类不能定义静态域或方法,编译不通过; 静态部类的作用域是实例级别 (2).常量是在编译器就确定的...内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字,:Outer.this.name (二).静态部类: 是 static 修饰的内部类 1.静态部类不能直接访问外部类静态成员...在内部类的属性和外部方法的参数两者外表上看是同一个东西,但实际上却不是,所以他们两者是可以任意变化的, 也就是说在内部类我对属性的改变并不会影响到外部的形参,而然这程序员的角度来看这是不可行的...2.静态方法不可以使用静态变量 3.抽象方法不可以有函数体

22730

1分钟带你看懂Java内部类

.class 文件: Outer.class,Outer$Inner.class{} 5.成员内部类不能存在任何 static 的变量和方法,可以定义常量: (1).因为静态部类是要依赖于外部类的实例...简而言之:在加载静态域时,根本没有外部类,所以在静态部类不能定义静态域或方法,编译不通过; 静态部类的作用域是实例级别 (2).常量是在编译器就确定的,放到所谓的常量池了 ★★友情提示: 1...., 可以使用 this 关键字,:Outer.this.name (二).静态部类: 是 static 修饰的内部类, 1.静态部类不能直接访问外部类静态成员,但可以通过 new 外部类()....只能访问方法定义的 final 类型的局部变量,因为: 当方法调用运行完毕之后,局部变量就已消亡了。...在内部类的属性和外部方法的参数两者外表上看是同一个东西,但实际上却不是,所以他们两者是可以任意变化的, 也就是说在内部类我对属性的改变并不会影响到外部的形参,而然这程序员的角度来看这是不可行的

45720

Java入门必背100条

静态方法,只能调用静态方法或属性。静态方法,既可以调用静态方法或属性,也可以调用静态方法或属性。 75、在静态方法,不能使用this关键字、super关键字(生命周期)。...⑥静态代码块只能调用静态的属性、静态方法,不能调用静态的结构 78、静态代码块使用说明: 内部可以输出语句 随着对象的创建而执行 每创建一个对象,就执行一次静态代码块 作用:可以在创建对象时...,对对象的属性等进行初始化 如果一个类定义了多个静态代码块,则按照声明的先后顺序执行 静态代码块可以调用静态的属性、静态方法,或静态的属性、静态方法 79、实例化子类对象时,涉及到父类...⑤如何在子类(或实现类)的方法调用父类、接口中被重写的方法。...CompareA.super.method3(); CompareB.super.method3(); } 90、内部类的分类:成员内部类静态静态 )、局部内部类(方法、代码块、构造器

1K20

【小家java】静态类、静态方法、内部类、匿名内部类静态类的一些实践

但如果这个类是内部类,是可以这样写的:public static class A 静态部类的作用:只是为了降低包的深度,方便类的使用,实现高聚。...静态部类有一个很大的优点:可以自由使用外部类的所有变量和方法,对其外部类有个引用 有了这两个区别,各位看官应该知道什么时候使用什么样的类了吧 下面是静态方法静态方法的区别: 静态方法(Static...通常通用的类中一些常用的方法可以设计为静态的 只要是没有用到类的状态信息,只参数获取信息的都可以为静态静态方法可以实现某些特殊的设计模式:Singleton 由于没有this指针,可以把某些系统...3、使用场景 内部类静态部类的区别 静态类 只能在内部类定义静态静态部类不依赖于外部类,即使外部类没有创建对象,静态类也可以new对象 静态类的方法可以是静态方法也可以是非静态方法静态方法可以在外层通过静态调用...可以实现多重继承 可以避免修改接口而实现同一个类***两种同名方法***的调用 java的设计旨在简单,所以初学者十分好入门并且上手工作,但作为一门火了这么多年的语言,肯定还是有些硬骨头的,而这些,

2.6K30

静态类、静态方法、内部类、匿名内部类静态类的一些实践

如题,在实际开发,关于静态类、静态方法、内部类、匿名内部类静态类一般都会遇到,特别是你在研究开源框架源码的时候很是常见,它是内聚性的体现。本文针对这些“概念”的实战,做些总结。...但如果这个类是内部类,是可以这样写的:public static class A 静态部类 vs 内部类 静态部类:只是为了降低包的深度,方便类的使用,实现高聚。...通常通用的类中一些常用的方法可以设计为静态的 只要是没有用到类的状态信息,只参数获取信息的都可以为静态静态方法可以实现某些特殊的设计模式:Singleton 由于没有this指针,可以把某些系统...内部类静态部类的区别 静态类 只能在内部类定义静态静态部类不依赖于外部类,即使外部类没有创建对象,静态类也可以new对象 静态类的方法可以是静态方法也可以是非静态方法静态方法可以在外层通过静态调用...内部类可以很好的实现隐藏(一般的部类,是不允许有 private 与protected权限的,但内部类可以) 内部类拥有外围类的所有元素的访问权限 可以实现多重继承 可以避免修改接口而实现同一个类

88750

Java 语言基础 (类和对象, 方法和封装, static 关键字和继承, 多态和特殊类)

不能使用 this 和 super 关键字 只能访问静态成员不能访问静态成员 因为此时对象可能还未被创建 既能访问静态成员又能访问静态成员 静态成员被所有对象共享 静态成员方法 静态成员方法 静态成员变量... Java 5 开始允许返回子类类型 要求方法的访问权限不能变小, 可以相同或变大 要求方法不能抛出更大的异常 (异常机制) 访问控制符 修饰符 本类 同一个包的类 子类 其他类 public 可以访问...对于父子类都有的静态方法来说 编译阶段调用父类版本 运行阶段调用子类重写的版本 (动态绑定) 对于父子类都有的静态方法来说 编译和运行阶段都调用父类版本 多态的实际意义 屏蔽不同子类的差异性实现通用的编程带来不同的效果...可以直接创建对象 访问外部类与本类同名的成员变量或方法时, 需要使用"类名."...可以给包进行注解 ElementType.PARAMETER 可以给方法的参数进行注解 ElementType.TYPE 可以给类型进行注解, Java 8 开始 @Target 的参数类型枚举值增加两个

79830

Java学习笔记-全栈-Java基础-06-面向对象的重点

(相当于python对象的init魔法方法) static{ 初始化代码 } 静态初始化块遵循继承树回溯,会从父类静态初始化块开始直到调用本类静态初始化块。...(继承树原则) 6.通过父类引用调用的变量一定是父类变量,即便子类重写了该变量,调用的依旧为父类变量的原有值。(即第一条,多态只跟静态方法有关) 8.1 隐藏 隐藏是相对于静态方法和属性而言的。...抽象类的构造方法不需要被实现,只会被自动调用。 抽象类可以出现方法的实现(构造方法)。 接口不提供任何方法的实现,完全面向规范。...4.调用外(作为成员,显然可以),外不能直接调用(作为类,对外部类来说内部类没有new出来) 5.静态静态在内部类不能同时出现(作为成员,要么在栈,要么在method area) 6.静态部类只具有成员的性质...finalize:Java的一个方法名。 Java技术使用finalize()方法在垃圾收集器将对象内存清除出去前,做必要的清理工作。

39620

JAVA入门2 原

静态方法的使用: ? 运行结果: ? 需要注意: 1、 静态方法可以直接调用同类静态成员,但不能直接调用静态成员。: ?...如果希望在静态方法调用静态变量,可以通过创建类的对象,然后通过对象来访问静态变量。: ? 2、 在普通成员方法,则可以直接访问同类的静态变量和静态变量,如下所示: ?...3、 静态方法不能直接调用静态方法,需要通过对象来访问静态方法: ?...//调用部类对象的show方法 inn.show(); } } (2)静态部类 特点是: 1、 静态部类不能直接访问外部类静态成员,但可以通过 new 外部类().成员 ...,方法部类只在该方法的内部可见,即只在该方法可以使用。

37710

【Java基础】类的成员总结(属性,方法,构造器,代码块,内部类

先声明,后使用 1.3 变量都有其对应的作用域 2.不同点: 2.1 在类声明的位置的不同 属性:直接定义在类的一对{} 局部变量:声明在方法方法形参、代码块、构造器形参、构造器内部的变量...静态代码块只能调用静态的属性、静态方法,不能调用静态的结构 静态代码块 内部可以有输出语句 随着对象的创建而执行 每创建一个对象,就执行一次静态代码块 作用:可以在创建对象时,...对对象的属性等进行初始化 如果一个类定义了多个静态代码块,则按照声明的先后顺序执行 静态代码块可以调用静态的属性、静态方法,或静态的属性、静态的 5.内部类 在Java,可以将一个类定义在另一个类里面或者一个方法里边...普通内部类作为外部类一个成员而存在,在普通内部类可以直接访问外部类属性,调用部类方法。...如果其他的类要访问普通内部类的属性或者调用普通内部类方法,必须要在外部类创建一个内部类的对象作为一个属性,外部类可以通过属性调用普通内部类方法或者访问普通内部类的属性。

49330

Java基础八股文(背诵版)

,在同一可见 private: 在同一可见,不能修饰类 protected : 对同一的类和所有子类可见,不能修饰类 public: 对所有类可见 构造方法、成员变量初始化以及静态成员变量三者的初始化顺序...详细的先后顺序:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类静态变量、父类静态代码块、父类构造函数、子类静态变量、子类静态代码块、子类构造函数。...重载:重载是指同一个类中有多个同名的方法,但这些方法有不同的参数,在编译期间就可以确定调用哪个方法。...static 修饰的方法无需创建对象就可以被调用。static 方法不能使用 this 和 super 关键字,不能调用 static 方法,只能访问所属类的静态成员变量和静态成员方法。...静态部类不能与外部类有相同的名字,不能访问普通成员变量,只能访问外部类静态成员和静态成员方法。 为什么要把 String 设计为不可变?

44.1K2738

赶在 520 之前给您来份 Java 的面向对象小抄

...... } 方法定义声明的变量(包括括号声明的变量和参数列表的变量)称为局部变量,局部变量具有以下这些性质: 只在方法中有效; 声明它的位置之后开始都是有效的; 复合语句或循环中的语句声明的变量只在相应的语句中有效...2.1.3. protected 介于 private 和 public 之间,①同一个包的所有类的所有方法都能访问该成员;②如果不在同一个包的类的方法要访问该成员,则该类必须是该成员所在类的子类。...这边我将内部类分为两类:静态实名内部类静态实名内部类。 5.1.1. 静态实名内部类 静态实名内部类其实也就是没有 static 关键字修饰的内部类,那么这个类类似于一个成员变量。...; 相比静态实名内部类来说,静态实名内部类可以有 static 方法。...,但是类其他的接口方法是无法通过接口变量调用的。

62420

第十三天 面向对象-final static 匿名对象内部类包代码块【悟空教程】

同一个类静态成员只能访问静态成员 main方法静态方法仅仅为程序入口,不属于任何一个对象,所以可以定义在任意类。...Body().new Heart(); //调用部类方法 bh.jump(); } 1.3.3 局部内部类 局部内部类,定义在外部类方法的局部位置。...,构造方法(无参,满参) 主方法要求调用method(工人1,工人2)方法使用匿名对象传参; method方法要求计算两位工人当前月份的工资和,并返参打印 答案: public class Worker...Phone p = new Phone("苹果","土豪粉"); p.show();//静态方法只能对象调用 }} 2.2.5 编写java程序,创建一个类Hello; 在类定义一个...function() ,无法访问静态成员 s1。

39440

Kotlin学习笔记(四)-面向对象

} 伴生对象与静态成员 kotlin 时没有static 这种方法修饰的静态方法 所以要实现 类似于java静态属性就要用到伴生对象 例子: fun main(args: Array<String...) } @JvmField//加上这个注解可以在Javastatic一样调用 val TAG = "Latitude" } } 每个类可以对应一个伴生对象...伴生对象的成员全局独一份 伴生对象的成员类似Java的静态成员 静态成员考虑用包级函数、变量替代 JvmField 和JvmStatic使用后,可以用相同的语法在Java调用 方法重载 与Java相同...,类似接口属性 Java 调用扩展成员类似调用静态方法 例子: //自己定义一个扩展方法 方法的名字是 类型.方法名 fun String.copy(int: Int): String {...(静态部类持有外部类的引用,而静态部类无法持有外部类的引用,这是因为静态部类优先于实例对象而存在) 内部类静态部类的区别: 是否持有外部类的状态(也就是非静态部类可以调用部类.this

83210

Java基础8:深入理解内部类

, 参数的类型是外部类的类型, 在构造方法内部使用这个参数为1添加的成员变量赋值;   3 在调用部类的构造函数初始化内部类对象时, 会默认传入外部类的引用。...让他成为主类的实例一部分 然后又想在内部类声明和实例无关的静态的东西 你让JVM情何以堪啊 4 若想在内部类声明静态字段 就必须将其内部类本身声明为静态 静态部类有一个很大的优点:可以自由使用外部类的所有变量和方法...3 对于静态部类是不能出现静态模块(包含静态块,静态属性,静态方法等) 4 静态类的使用需要依赖于外部类的对象,详见上述对象innerClass 的初始化。...需要注意的是: 局部内部类只能在定义该内部类方法实例化,不可以在此方法外对其实例化。...直到这里还没有解释为什么是final 在内部类的属性和外部方法的参数两者外表上看是同一个东西,但实际上却不是,所以他们两者是可以任意变化的,也就是说在内部类我对属性的改变并不会影响到外部的形参,而然这程序员的角度来看这是不可行的

1.5K00

【Java基本功】一文读懂Java内部类的用法和原理

, 参数的类型是外部类的类型, 在构造方法内部使用这个参数为1添加的成员变量赋值;   3 在调用部类的构造函数初始化内部类对象时, 会默认传入外部类的引用。...让他成为主类的实例一部分 然后又想在内部类声明和实例无关的静态的东西 你让JVM情何以堪啊 4 若想在内部类声明静态字段 就必须将其内部类本身声明为静态 静态部类有一个很大的优点:可以自由使用外部类的所有变量和方法...3 对于静态部类是不能出现静态模块(包含静态块,静态属性,静态方法等) 4 静态类的使用需要依赖于外部类的对象,详见上述对象innerClass 的初始化。...需要注意的是: 局部内部类只能在定义该内部类方法实例化,不可以在此方法外对其实例化。...直到这里还没有解释为什么是final 在内部类的属性和外部方法的参数两者外表上看是同一个东西,但实际上却不是,所以他们两者是可以任意变化的,也就是说在内部类我对属性的改变并不会影响到外部的形参,而然这程序员的角度来看这是不可行的

1K30

夯实Java基础系列18:深入理解Java内部类及其实现原理

, 参数的类型是外部类的类型, 在构造方法内部使用这个参数为1添加的成员变量赋值;   3 在调用部类的构造函数初始化内部类对象时, 会默认传入外部类的引用。...让他成为主类的实例一部分 然后又想在内部类声明和实例无关的静态的东西 你让JVM情何以堪啊 4 若想在内部类声明静态字段 就必须将其内部类本身声明为静态 静态部类有一个很大的优点:可以自由使用外部类的所有变量和方法...3 对于静态部类是不能出现静态模块(包含静态块,静态属性,静态方法等) 4 静态类的使用需要依赖于外部类的对象,详见上述对象innerClass 的初始化。...需要注意的是: 局部内部类只能在定义该内部类方法实例化,不可以在此方法外对其实例化。...直到这里还没有解释为什么是final 在内部类的属性和外部方法的参数两者外表上看是同一个东西,但实际上却不是,所以他们两者是可以任意变化的,也就是说在内部类我对属性的改变并不会影响到外部的形参,而然这程序员的角度来看这是不可行的

1.2K10
领券