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

如何从封闭的外部类中调用与匿名类中实现的方法同名的方法?

从封闭的外部类中调用与匿名类中实现的方法同名的方法的方法有两种:

  1. 使用类名.方法名的方式调用:如果封闭的外部类与匿名类属于同一个类或者接口,可以使用"类名.方法名"的方式调用匿名类中的方法。例如,如果封闭的外部类为MainClass,匿名类为AnonymousClass,两者都实现了一个同名的方法testMethod(),可以通过MainClass.testMethod()来调用封闭类中的方法,而通过AnonymousClass.testMethod()来调用匿名类中的方法。
  2. 在匿名类中创建一个新的方法来调用:如果封闭的外部类与匿名类不属于同一个类或者接口,可以在匿名类中创建一个新的方法,然后在该方法中调用匿名类中的方法。例如,如果封闭的外部类为MainClass,匿名类为AnonymousClass,可以在MainClass中定义一个方法callAnonymousMethod(),在该方法中通过AnonymousClass的实例调用匿名类中的方法。

下面是一个示例代码:

代码语言:txt
复制
public class MainClass {
    public void callAnonymousMethod() {
        AnonymousClass anonymous = new AnonymousClass();
        anonymous.testMethod(); // 调用匿名类中的方法
    }
    
    public static void main(String[] args) {
        MainClass main = new MainClass();
        main.callAnonymousMethod(); // 调用封闭类中的方法
    }
}

interface SomeInterface {
    void testMethod();
}

class AnonymousClass implements SomeInterface {
    @Override
    public void testMethod() {
        System.out.println("调用匿名类中的方法");
    }
}

在上述代码中,封闭的外部类为MainClass,匿名类为AnonymousClass,它们都实现了SomeInterface接口,并且都有一个同名的testMethod()方法。在callAnonymousMethod()方法中,通过AnonymousClass的实例调用了匿名类中的testMethod()方法。在main()方法中,通过MainClass的实例调用了封闭类中的testMethod()方法。

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

相关·内容

.NET那些所谓新语法之二:匿名匿名方法扩展方法

实现效果如下图所示: ? 1.3 匿名共享   可以想象一下,如果我们代码定义了很多匿名,那么是不是编译器会为每一个匿名都生成一个泛型呢?...通过Reflector,可以发现,编译器确实重新生成了一个泛型: 二、匿名方法:[ C# 2.0/.NET image.png 2.0 新增特性 ] 2.1 委托声明说起   C#匿名方法是在...2.2 引入匿名方法   (1)首先,我们来看看上面的例子如何使用匿名方法实现: DelegateTest dgTest2 = new DelegateTest(delegate(string name...在抽象工厂模式,我们可以通过新增一个工厂,而不需要更改源代码就可以切换到新工厂。这里也是如此,在不修改源码情况下,为某个增加新方法,也就实现扩展。   ...(3)如果要扩展本来就有和扩展方法名称一样方法,到底会调用成员方法还是扩展方法呢?

83130
  • python 不同包 方法 之间调用详解

    from ORMPackage.ORM import User 或者 from .ORM import User # 最近发现这种情况较多,直接 .* 补充知识:python导入两个包括同名函数模块...当使用函数中出现同名函数时,如果不注意的话,会造成程序异常,这个时候要仔细看程序报错信息,会发现是函数引用出现错误。...circular import * #导入圆形模块 girth(10) #调用计算圆形周长函数 girth(10,,20) #调用计算矩形周长函数 解决办法是...r.girth(10,,20) #调用计算矩形周长函数 也可以直接把函数起别名,这样在用函数时候直接使用函数别名就行了 from… import ….as… 以上这篇python...不同包 方法 之间调用详解就是小编分享给大家全部内容了,希望能给大家一个参考。

    2.4K10

    java匿名部类使用(仅限介绍实际使用两种方法)

    使用场景: 匿名部类可以使你代码更加简洁,你可以在定义一个同时对其进行实例化。它与局部类很相似,不同是它没有名,如果某个局部类你只需要用一次,那么你就可以使用匿名部类。...使用步骤 定义匿名部类 匿名部类语法 访问作用域局部变量、定义和访问匿名部类成员 匿名部类实例 两种案例类型 实现接口匿名 匿名子类(继承父) 运行结果: 运行结果: 匿名部类访问其外部类方法...动物 布谷鸟 以上两个实例可知,匿名表达式包含以下内部分: 操作符:new; 一个要实现接口或要继承,案例一匿名实现了HellowWorld接口,案例二匿名部类继承了Animal...父; 一对括号,如果是匿名子类,实例化普通语法类似,如果有构造参数,要带上构造参数;如果是实现一个接口,只需要一对空括号即可; 一段被"{}“括起来声明主体; 末尾”;"号(因为匿名声明是一个表达式...,是语句一部分,因此要以分号结尾)。

    49020

    Python通过对象不能调用方法和静态方法解析

    一、方法和静态方法定义在了解Python通过对象不能调用方法和静态方法之前,首先需要明确方法和静态方法定义。...方法和静态方法都是定义在一种方法,可以通过名直接调用,而不需要先创建该类实例。...二、对象调用方法原理在Python,对象调用方法原理可以简单概括为:Python通过找到方法所在,并将该对象作为第一个参数(通常用self)传入方法。...三、不能通过对象调用方法和静态方法原因既然Python对象调用方法原理是将该对象作为第一个参数传入方法,那么为什么不能通过对象调用方法和静态方法呢?...3.2 静态方法在静态方法,不需要传入self或cls,因此,如果我们通过对象调用静态方法,实际上传入参数是该对象本身,而不是任何或实例。这就意味着,静态方法无法其中访问或实例属性或方法

    86730

    Java 反射机制详解:私有方法调用头大?如何通过反射调用私有方法

    文章目录 前言 一、私有方法在本类中直接调用 1.1、在本类实例化,调用私有方法 1.2、尝试在其他直接调用私有方法(错误示范) 二、使用反射实例化强制调用私有方法 2.1、使用加载器加载被调用...2.2、使用 Object 对获取进行实例化 2.3、调用 Java 反射中 Method 2.4、取消 Java 语言访问检查 2.5、使用 method 方法返回对象 三、完整实现代码...但是如果需要在其他调用私有的方法,就可以利用 Java 中提供反射来实现。...一、私有方法在本类中直接调用 1.1、在本类实例化,调用私有方法 说明:被 private 关键字修饰构造方法方法或者数据域只在其所在可见。...(); } } 1.2、尝试在其他直接调用私有方法(错误示范) 如果我们直接在其他实例化 Demo ,来直接调用 demo() 方法,就会发现 IDE 直接产生编译错误,很明显我们直接在另一个调用私有方法是行不通

    2.4K21

    使用 Java 反射机制调用私有方法原理详解

    文章目录 前言 一、私有方法在本类中直接调用 1、在本类实例化,调用私有方法 2、尝试在其他直接调用私有方法(错误示范) 二、使用反射机制实例化强制调用私有方法 1、使用加载器加载被调用 2...args[]);返回对象 三、完整实现代码、运行结果及总结 总结 ---- 前言 在 Java 如果我们使用 new 关键字调用构造函数对进行实例化,我们就可以根据在这个修饰符来访问定义非私有方法...但是如果需要在其他调用私有的方法,就可以利用 Java 中提供反射来实现。 ?...---- 一、私有方法在本类中直接调用 1、在本类实例化,调用私有方法 说明:被 private 关键字修饰构造方法方法或者数据域只在其所在可见。...2、尝试在其他直接调用私有方法(错误示范) 如果我们直接在其他实例化Demo,来直接调用demo()方法,就会发现 IDE 直接产生编译错误,很明显我们直接在另一个调用私有方法是行不通

    4K31

    thymeleaf模板引擎调用java方法(附源码)

    问题分析 在My Blog项目的issue页面收到了这个问题,issue描述是关于如何在thymeleaf模板页面如何调用java方法,问题描述如下截图: ?...test() on null context object 从这条异常信息可以大致得出一个答案,调用test()方法处于一个空对象,即context域中并没有对应java实例,因此无法调用。...将此问题重现后,我又想,如果调用方法为空会报什么错误呢?试着写了一下: <p th:text="'<em>调用</em>不存在<em>的</em><em>方法</em>: ' + ${MethodTest.service()} + '!'"...两个异常分别是: 异常1 : Attempted to call method on null context object 调用方法处于一个空对象,即调用实例为空。...针对于异常2,则更加简单,仔细检查代码,不要写错调用方法名即可,不要使用未定义方法。 ? 结语 首发于我个人博客。 如果有问题或者有一些好创意,欢迎给我留言,也感谢向我指出项目中存在问题朋友。

    2.3K50

    【Groovy】闭包 Closure ( 闭包调用 Groovy 脚本方法 | owner delegate 区别 | 闭包调用对象方法 )

    文章目录 一、闭包调用 Groovy 脚本方法 二、owner delegate 区别 三、闭包调用 Groovy 对象方法 一、闭包调用 Groovy 脚本方法 ---- 在 Groovy...脚本 , 在 Closure 闭包 , 可以直接调用 Groovy 脚本定义方法 ; def fun() { println "fun" } def closure = {..., 这是无法改变 ; 但是 Closure 闭包对象 delegate 成员是可以修改 ; 三、闭包调用 Groovy 对象方法 ---- 在闭包 , 可以直接调用 Groovy 脚本定义方法...; 但是如果想要在闭包 , 调用实例对象方法 , 就必须设置闭包 delegate 成员 ; 如下代码 , 想要在闭包 , 调用 Test 对象 fun 方法 , 在执行闭包之前 , 必须将...} } // 闭包不能直接调用 Test 对象方法 // 此时可以通过改变闭包代理进行调用 def closure = { fun() } closure.delegate = new

    3.1K20

    Vue父组件如何调用子组件方法

    在Vue开发过程,我们经常需要在一个组件调用另一个组件方法。这篇文章将详细介绍如何在Vue实现父组件调用子组件方法。我们将以一个简单例子来说明这个问题,并给出相应解决方案。...子组件将提供一个方法,而父组件将调用这个方法。子组件:<!...当用户点击按钮时,这个方法将被触发。在这个方法,我们通过this.$refs获取到了子组件实例(即childComponent),然后调用了子组件closeSerialPort方法。...这样就完成了父组件对子组件方法调用。需要注意是,在调用子组件方法时,需要使用this.$refs来获取子组件实例。只有通过这种方式,才能确保我们在父组件调用是子组件正确方法。...这在某些情况下非常有用,例如当你需要在Vue实例执行一些组件或元素相关操作时。$refs语法$refs是一个对象,它包含了一些属性,用于访问Vue实例组件或元素DOM节点或组件实例。

    1.1K00

    零学习python 】45.Python方法和静态方法

    方法、静态方法 方法 方法是以对象作为第一个参数方法。需要使用装饰器@classmethod来标识其为方法。对于方法,第一个参数必须是对象,一般以cls作为第一个参数。...__type 使用场景: 当方法需要使用对象(如访问私有类属性等)时,定义方法方法一般和类属性配合使用。...静态方法 静态方法通过装饰器@staticmethod来修饰,静态方法既不需要传递对象也不需要传递实例对象(形参没有self/cls)。静态方法也可以通过实例对象和对象去访问。...使用场景 当方法既不需要使用实例对象(如实例对象,实例属性),也不需要使用对象(如类属性、方法、创建实例等)时,定义静态方法。 取消不需要参数传递,有利于减少不必要内存占用和性能消耗。...注意点: 当定义了同名方法时,调用方法会执行最后定义方法

    12810

    golang实现动态调用不同struct不同方法

    在我们业务,尤其涉及到后台业务,在我们不用考虑性能情况下,我们写后台框架时候,可能会遇到这样一些情况,如何通过某些struct名和方法名传递进来执行不同逻辑。...这个时候我想是go反射是最好实现这种功能,当然在go里面也可以通过定义配置来实现进入动态进入不同struct名和方法名,或者其他方式(如果你有更好方式,可以互相交流)。...我想是如果前端传PermissionController和GetPermission等其他不同struct不同方法我都能动态执行不同方法,当然如果找不到对应struct和不同方法,那肯定是需要告诉前端你请求方法不存在...下面我们来实现这样一个功能。...,但是其中某些坑还是很多,好了关于动态调用不同struct不同方法就到这里,有兴趣可以找我交流。

    1.6K20

    创建子类对象时,父构造函数调用被子类重写方法为什么调用是子类方法

    static void main(String[] args) { A a = new A(); B b = new B(); } } 问题:为什么创建A对象时候父调用子类方法...但是:创建B对象父调用方法? 答案: 当子类被加载到内存方法区后,会继续加载父到内存。...如果,子类重写了父方法,子类方法引用会指向子类方法,否则子类方法引用会指向父方法引用。 如果子类重载了父方法,则子类重载方法引用还指向子类方法。...如果子类方法没有重写也没有重载父方法,则方法引用会指向父方法。 当子类对象创建时,会先行调用构造方法(构造方法也是方法),虚拟机会在子类方法区寻找该方法并运行。...其结果是当编译时候,父构造方法调用方法参数已经强制转换为符合父方法参数了。 上边代码在编译前已经转换为下面这个样子了。

    6.2K10

    如何正确实现JavahashCode方法

    当一个实例来进行contains操作时,它哈希码将用来计算桶值(索引值),只有当对应索引值上存在元素时,才会对实例进行比较。 因此equals,hashCode是定义在Object。...否则相等对象是可能不会有相同哈希码,因为它们将调用是Object's默认实现。...HashCode 准则 引用自官方文档 hashCode通用约定: * 调用运行Java应用程序同一对象,hashCode方法必须始终返回相同整数。...性能 哈希码最终计算频率可能调用equals差不多,那么这里将是影响性能关键部分,因此考虑此部分性能也是非常有意义。并且equals相比,优化之后又更大上升空间。...这就意味着如果重写了equals方法,那么就必须重写hashCode方法实现hashCode 使用equals中使用相同字段(或者equals中使用字段子集) 最好不要包含可变字段。

    1.8K90
    领券