美文网首页
泛型 边界 接口 &

泛型 边界 接口 &

作者: lkuo | 来源:发表于2018-04-17 16:10 被阅读23次

    先看代码:

    public class test1 {
        interface Game {
            void play();
        }
    
        interface Program {
            void code();
        }
    
        public static class People<T extends Program & Game> {
            private T mPeople;
    
            public People(T people) {
                mPeople = people;
            }
    
            public void habit() {
                mPeople.code();
                mPeople.play();
            }
        }
    
        public static class Aa implements Program, Game {
            public Aa() {
            }
    
            @Override
            public void play() {
                System.out.println("Game play!");
            }
    
            @Override
            public void code() {
                System.out.println("Program code!");
            }
        }
    
        public static void main(String[] arg1) {
            Aa a = new Aa();
            People<Aa> people = new People<>(a);
            people.habit();
        }
    }
    

    可以看到代码中 <T extends Program & Game>这种写法,是指T是实现了Program和Game接口的类,泛型中没有集成接口的说法(没有implements)。

    如果没有指明边界,类型参数将被擦除为 Object。
    如果我们想要让参数保留一个边界,可以给参数设置一个边界,泛型参数将会被擦除到它的第一个边界(边界可以有多个),这样即使运行时擦除后也会有范围。

    相关文章

      网友评论

          本文标题:泛型 边界 接口 &

          本文链接:https://www.haomeiwen.com/subject/qwcpkftx.html