【发布时间】:2011-04-28 01:56:28
【问题描述】:
开发Java,你一直都知道最好使用List接口作为存储列表的变量的类型来创建一个ArrayList。像这样
List<String> myList = new ArrayList<String>();
但是,通过查看捆绑包中包含的许多 android 示例,他们使用 Class 创建了列表。
ArrayList<String> myList = new ArrayList<String>();
这样做有什么理由吗?显式设置类是更快、更轻还是什么?
【问题讨论】:
-
"你一直都知道最好使用 List 接口创建一个 ArrayList"。有趣的是,我以前从未听说过。这样做有什么好处?
-
@Brian 如果您尽可能多地使用接口,代码将与列表的实现分离。更容易将列表替换为仅实现列表接口的另一个对象。像一些奇怪的数据库抽象或其他东西。
-
示例何时总是使用最佳实践?大多数 MySQL/PHP 示例都充斥着 SQL 注入攻击和其他问题。 Web 上的大多数示例都是以这样的方式完成的,即您可以从尽可能少的代码中获得尽可能多的功能,或者使用尽可能易于理解的代码,同时完全忽略最佳实践、潜在的安全漏洞和错误检查.
-
回应人们问为什么首先在声明中使用接口:Effective Java 2nd Edition,第 52 条:通过接口引用对象“如果存在适当的接口类型,则参数,返回值和字段都应该使用接口类型声明。如果你养成使用接口类型的习惯,你的程序会灵活很多。如果没有合适的接口,完全可以用类来引用对象。 "