本文主要是介绍通过泛型+接口实现多变的参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.AbsItemManager.java
package org.example.testGeneric;import com.google.common.collect.Maps;import java.util.Map;public abstract class AbsItemManager<E> {protected Map<Integer, E> map = Maps.newHashMap();/*** 要做什么操作,交给子类处理** @param e*/public abstract void clear(E e);public void absF() {map.forEach((k, v) -> {clear(v);});}
}
2.ItemManager.java
package org.example.testGeneric;public class ItemManager extends AbsItemManager<ItemEntity> {public void f() {ItemEntity itemEntity = map.computeIfAbsent(1, k -> new ItemEntity());System.out.println(itemEntity.getCount());absF();System.out.println(itemEntity.getCount());}@Overridepublic void clear(ItemEntity itemEntity) {itemEntity.setCount(itemEntity.getCount() - 100);}
}
3.ItemEntity.java
package org.example.testGeneric;import lombok.Data;@Data
public class ItemEntity {private int id = 1000;private int count = 600;
}
4.Main.java
package org.example.testGeneric;public class Main {public static void main(String[] args) {ItemManager itemManager = new ItemManager();itemManager.f();}
}
总结:再子类中,我们拿到的map中k,v的类型是确定的,这时我们就可以做一些事情。
这篇关于通过泛型+接口实现多变的参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!