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();
        }
    }
    
  • 相关阅读:
    java第五周作业
    ajax初探--实现简单实时验证
    Html+CSS二周目--->常用概念
    Html+CSS--->第一周初探
    Servlet细节整合
    多线程基础
    设计模式之单例模式(Singleton)
    配置文件Java读写
    Java基础之IO流
    JDBC基础
  • 原文地址:https://www.cnblogs.com/JuncaiF/p/11153352.html
Copyright © 2011-2022 走看看