zoukankan      html  css  js  c++  java
  • 匿名内部类的使用

    直接代码

    package com.fang.java.javabase.innerclass;
    
    import java.util.jar.Attributes.Name;
    
    import lombok.Data;
    import lombok.extern.slf4j.Slf4j;
    
    @Slf4j
    @Data
    public class AnonymousClasses {
        Animal outan;
    
        interface HelloWorld {
            void greet();
    
            void greetsomeone(String someone);
        }
    
        // 内部类
        class Animal {
            public String name="default";
            public Animal() {
    
            }
            public Animal(String name) {
                this.name = name;
            }
    
            public void printName() {
                log.info("Animal:" +this.name);
            }
            public String getName(){
                return name;
            }
    
    
        }
    
        public void outFun() {
            log.info("out function");
    
        }
    
        //匿名类通过外部的调用外部的变量
        public Animal getAni(final String args) {
            return new Animal() {
                public void printName() {
                    outFun();
                    log.info("Animal:" + args);
                }
    
            };
        }
        //通过实例初始化来调用外部的局部变量
        public Animal getAni2(String args) {
            return new Animal(args) {
                public void printName() {
                    outFun();
                    //log.info("Animal:" + getName());如果nane是private
                    log.info("Animal:" + name);
                }
    
            };
        }
    
        public static void main(String[] args) {
            AnonymousClasses ac = new AnonymousClasses();
            HelloWorld helloWorld = new HelloWorld() {
                private String input;
    
                @Override
                public void greetsomeone(String someone) {
                    log.info("hello " + someone);
                }
    
                @Override
                public void greet() {
                    log.info("hello world" );
                }
            };
            //接口的匿名内部类实现
            helloWorld.greet();
            helloWorld.greetsomeone("jack");
    
            //类的匿名内部类的实现
            ac.getAni("buguliao").printName();;
    
            ac.getAni2("xiaoji").printName();
    
            //内部类的调用方式
            ac.new Animal("da e"){
                public void printName() {
                    log.info("Animal:"+name);
                }
            }.printName();
        }
    }
    
  • 相关阅读:
    markdown样式代码保存
    【python系统学习08】for循环知识点合集
    【python系统学习07】一张图看懂字典并学会操作
    【python系统学习06】一张图看懂列表并学会操作
    java后端学习记录
    支付功能设计及实现思路
    《Kafka权威指南》读书笔记
    ReentrantLock源码简析
    敏捷开发流程
    上线新功能,如何兼容旧数据?
  • 原文地址:https://www.cnblogs.com/JuncaiF/p/11153352.html
Copyright © 2011-2022 走看看