JAVA

generic

닉의네임 2020. 4. 2. 12:21
반응형

Human.java

package com.test.doo.entities;


import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Human<T, M> {
    protected T name;
    protected M age;
}

Boy.java

package com.test.doo.entities;

public class Boy<T, M> extends Human{
}

Girl.java

package com.test.doo.entities;

public class Girl<T, M> extends Human {
}

Main.Java

package com.test.doo.entities;

import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {
        Girl<String, Integer> girl = new Girl();
        girl.setName("sh");
        girl.setAge(45);

        Boy<String, Integer> boy = new Boy();
        boy.setName("dh");
        boy.setAge(38);

        Cat cat = new Cat();
        cat.setSpecies("kor");
        cat.setAge(2);

        List<Human> humans = new ArrayList<>();
        Utiles.<Human>getMember(humans, girl);
        Utiles.<Human>getMember(humans, boy);
//        Utiles.getMember(humans, cat);

        humans.stream().forEach(x -> {
                    System.out.println(x.getName());

                }
        );
    }


}

 

Utiles.java

package com.test.doo.entities;

import java.util.List;

public class Utiles {

    public static  <T extends Human> List<? extends Human> getMember(List<T> list , T t){
        list.add(t);
        return list;
    }
}

 

반응형