记录草稿---类型推断

    xiaoxiao2021-03-25  108

    类型推断 Type interface import java.util.List; import java.util.Map; import com.google.common.collect.Lists; import com.google.common.collect.Maps; public class Test{ Map<String ,List<String>> map1 = new HashMap<String ,List<String>>(); List<String> list1 = new ArrayList<String>(); Map<String ,List<String>> map2 = Maps.newHashMap(); List<String> list2 = Lists.newArrayList(); } http://ifeve.com/static-factory-methods-vs-traditional-constructors/ 最后一个优点是静态工厂是实例化参数类很简洁。你曾经见过像这样的代码吗? Map<String, List<String>> map = new HashMap<String, List<String>>(); 你在代码的同一行重复相同的参数两次!如果右边的赋值可以从左边被推断出来,那将是很优雅的做法。使用静态方法就可以。下面的代码取自 Guava’s Maps 类: public static <K, V> HashMap<K, V> newHashMap() { return new HashMap<K, V>(); } 所以现在我们的客户端代码变成如下: Map<String, List<String>> map = Maps.newHashMap();相当的优雅,对吗?这样的能力被成为类型推断(Type interface)。值得一提的是Java7通过使用方括号运算符(diamond operator)引入了类型推断。所以,如果你使用Java7你可以前面的例子如: Map<String, List<String>> map = new HashMap<>();静态工厂的主要缺点是类中没有public或者protected的构造器无法被继承。但事实上,在某种情况下这个一件好事,因为鼓励开发者优先使用组合而不是继承(favor composition over inheritance)。 总的来讲,静态工厂方法提供了许多优点,当你在使用时唯一的不足之处实际上也不会是一个问题。所以,评估一下你的类是否更适合静态工厂,拒绝急切的自动提供公共的构造器。
    转载请注明原文地址: https://ju.6miu.com/read-10208.html

    最新回复(0)