我经常遇到人们实例化一个新的ArrayList并将其分配给List接口(interface)的代码,如下所示:Listnames=newArrayList();这种方法背后的原因是什么? 最佳答案 将您的代码与接口(interface)的特定实现分离。这也可以帮助您转移到List的另一个实现future的界面。例如——你有Listnames=newArrayList();稍后你决定你应该使用List的一些其他实现。界面,说LinkedList所以你只需将其更改为Listnames=newLinkedList();没有任何问题。
我发现自己同意返回一个接口(interface)而不是一个具体的类。原因很简单,我要松耦合。但是会有其他影响或权衡吗? 最佳答案 最好返回最适合您的接口(interface)的通用类型。如果出于某些原因ArrayList本质上适合您要返回的数据,那么您应该使用它。通常List没问题,但如果返回值本质上是无序的,您也可以考虑使用Collection: 关于java-我应该返回List还是ArrayList?,我们在StackOverflow上找到一个类似的问题:
我脑抽筋了:我有一个publicinterfaceSomeInterface和一个staticprivateclassSomeClass并试图返回List从我的一种方法,但我得到了错误(在下面的returnlist;行):Typemismatch:cannotconvertfromListtoList如何在不创建新列表的情况下解决此问题?澄清:我不想将列表创建为List(也许是显而易见的解决方案)因为私下里我想维护一个List允许将来访问SomeClass的方法,而不是公共(public)接口(interface)中的方法。这在下面的示例中没有显示,但在我的实际程序中我需要它。impo
这个问题在这里已经有了答案:HowtoconvertListtoMap?(20个答案)关闭7年前。我想找到一种方法来获取下面的对象特定例程并将其抽象为一个方法,您可以通过该方法传递类、列表和字段名以取回Map。如果我能得到关于使用的模式或等的一般指示,这可以让我在正确的方向上开始。Mapmapped_roles=newHashMap();Listp_roles=(List)c.list();for(Roleel:p_roles){mapped_roles.put(el.getName(),el);}为了这个?(伪代码)MapMapMe(Classclz,Collectionlist,S
这个问题在这里已经有了答案:CannotconvertfromListtoList>(3个答案)关闭7年前。我没有得到这段代码以任何方式编译:Lista=newArrayList();List>b=newArrayList();a=b;//incompatibletypesb=a;//incompatibletypesjava好像没有考虑List和List在涉及泛型时是同一类型。这是为什么呢?有什么好的出路吗?上下文有一个具有以下签名的库函数:publicSet>getSubTypesOf(finalClasstype).这适用于作为参数传递的简单类型,但在泛型的情况下,结果未使用通配
我在基于Java7WatchServiceAPI跟踪目录中文件内容的应用程序中遇到了一个反复出现的问题。当底层文件系统触发文件修改事件时,我想立即计算其SHA-256。但经常会发生另一个进程打开文件(即Word),从而保留独占锁并阻止我的应用程序进行任何读/写操作。如果针对打开的文件创建了任何流/channel,则会抛出FileNotFoundException或nioAPI的FileSystemException以及如下消息:Theprocesscannotaccessthefilebecauseitisbeingusedbyanotherprocess当文件在fs上实际上不存在时,
我认为Java通过系统区域设置确定“file.encoding”系统属性。但在我的系统中,当系统区域设置为“ko_kr.UTF-8”时,“file.encoding”为“ANSI_X3.4-1968”。Java如何确定“file.encoding”系统属性? 最佳答案 来自以下链接的native代码填充属性(适用于solaris、Linux操作系统)native方法加载系统属性下方。privatestaticnativePropertiesinitProperties(Propertiesprops);下面的链接是用于加载属性的na
我的大部分程序都是在Windows上编程的,在首选项方面没有任何问题。我刚刚启动了Ubuntu12.04并将我的类加载到Eclipse中。在运行时,我在控制台中收到:Oct12,20128:14:38PMjava.util.prefs.FileSystemPreferences$6runWARNING:Prefsfileremovedinbackground/home/steven/.java/.userPrefs/prefs.xml我知道这与Ubuntu上的preferences系统有关,但是几次Google搜索都没有找到解决方案。谁能帮我解决这个错误?
注意:请运行下面的确切代码;不要对其进行改编,特别是不要使用File,因为此错误与新的java.nio.fileAPI相关好吧,这不是一个真正的“需要答案的问题”,而是一个需要证人的电话……场景:在你的操作系统上有一个目录,不管它是什么,你知道你有访问权限——用Unix的说法,你至少有读取权限(这意味着你可以列出其中的条目);在下面的代码中,假设System.getProperty("java.io.tmpdir")表示的路径符合要求;安装了OracleJDK或OpenJDK7+;这样您就可以使用java.nio.file。现在,下面的代码做的很简单:它尝试openanewInputS
java.nio.file.FilesAPI是对旧的java.io.File类的一个非常好的改进,但有一个细节让我感到奇怪;除了delete()没有方法记录它们可能会抛出NoSuchFileException,甚至delete()都说这是可选的。我希望能够区分由于丢失文件和其他IO问题导致的失败,但似乎不能保证这可能。如果文件是在两个操作之间创建的,则预先调用Files.exists()等方法的替代方法会冒竞争条件的风险。我能否期望Files中的方法会在适当的时候引发NoSuchFileException?如果是这样,这在哪里记录?如果不是,我如何安全地确定故障是由于文件丢失造成的?示