相关疑难解决方法(0)

"编程到界面"是什么意思?

我已经看过几次提到这个,我不清楚这是什么意思.你何时以及为何会这样做?

我知道接口有什么作用,但事实上我不清楚这一点让我觉得我错过了正确使用它们.

如果你这样做是这样的:

IInterface classRef = new ObjectWhatever()
Run Code Online (Sandbox Code Playgroud)

你可以使用任何实现的类IInterface吗?你什么时候需要这样做?我唯一能想到的是,如果你有一个方法,你不确定除了实现之外将传递什么对象IInterface.我想不出你需要多久做一次.

另外,你怎么能写一个接受实现接口的对象的方法?那可能吗?

language-agnostic oop interface

791
推荐指数
17
解决办法
16万
查看次数

多态性:为什么使用"List list = new ArrayList"而不是"ArrayList list = new ArrayList"?

可能重复:
为什么要优先选择Java类的接口?

我应该什么时候使用

List<Object> list = new ArrayList<Object>();
Run Code Online (Sandbox Code Playgroud)

ArrayList继承自List,所以如果某些功能ArrayList不在List,那么我将失去一些功能ArrayList,对吧?编译器在尝试访问这些方法时会注意到错误?

java polymorphism interface list

139
推荐指数
7
解决办法
9万
查看次数

实现接口的开销

我的一位同事告诉我,实现接口会带来开销.这是真的?

我不关心微观优化; 我只是想知道这需要更深入的细节.

.net c# java performance interface

12
推荐指数
5
解决办法
4370
查看次数

为什么要将新的ArrayList分配给List变量?

我是java的新手,当我浏览网上的许多例子的代码时,我看到人们在几乎所有情况下都ArrayList只是声明变量List.

List<String> myList = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

我不明白这样做是否有一些特定的优势.为什么它不能成为一个ArrayList本身,就像这样:

ArrayList<String> myList = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

java

6
推荐指数
1
解决办法
5020
查看次数

什么时候在声明变量/参数时使用 ArrayList 或 LinkedList 而不是 List 是正确的?

假设你有一个类似的类:

public class foo {
    private List<String> fooThings;

    public void doSomething(List<String> things) {
        // Do a bunch of things here
        // Possibly setting fooThings at some point as well
    }
}
Run Code Online (Sandbox Code Playgroud)

声明指定具体类(例如 ArrayList 而不是 List 接口)是否合适?如果有,什么时候?

编辑> 这个问题与何时使用 LinkedList 以及何时使用 ArrayList 无关。这是一个单独的问题,在别处回答。问题是为了清楚起见,何时声明应该是接口(List),何时应该指定一个实现,例如 ArrayList,因为考虑到方法将要做什么或如何利用实例变量,这很重要。

java

5
推荐指数
1
解决办法
1396
查看次数

什么接口表示具有插入顺序迭代的LinkedHashSet

由于以下代码行,我被Sonar拉了起来:

public void setFileNames(LinkedHashSet<String> fileNames) {
Run Code Online (Sandbox Code Playgroud)

带有错误消息:

避免使用像'LinkedHashSet'这样的实现类型; 改为使用界面

当我想表示一个Set保持其插入顺序的非排序时,有什么方法呢?我只是使用a Set并明确表示将保留迭代顺序吗?

存储的数据将使用JaxB序列化,反序列化后迭代顺序必不可少.

(我知道并完全理解这一点)

java sonarqube

5
推荐指数
1
解决办法
453
查看次数

在JAVA中创建集合实例

可能重复:
为什么要优先选择Java类的接口?
使用Collection接口创建ArrayList对象的多态性有什么好处?

我在很多例子中看到,当一个人创建像TreMap这样的集合的实例时,他会使用它的基类作为类型:

Map<String,String> theMap = new TreeMap<String,String>();
Run Code Online (Sandbox Code Playgroud)

为什么不使用

TreeMap<String,String> theMap = new TreeMap<String,String>(); 
Run Code Online (Sandbox Code Playgroud)

java

4
推荐指数
1
解决办法
3085
查看次数

List <Object> listObject = new ArrayList <Object>()?

很多时候我看到Arraylist的实例化是以"

List<Object> listObject = new ArrayList<Object>();
Run Code Online (Sandbox Code Playgroud)

所以我想知道以这种方式实例化Arraylist的重要性是什么?如果我们实例化ArrayList()会发生什么

ArrayList<Object> listObject = new ArrayList<Object>();
Run Code Online (Sandbox Code Playgroud)

java arraylist

2
推荐指数
1
解决办法
6411
查看次数

何时/为何使用/定义接口

可能重复:
最好在java中使用接口

嗨,

在定义类时,我应该总是定义一个相应的接口吗?

有什么好处

List list = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

为什么不呢 -

ArrayList arrayList = new ArrayList();
Run Code Online (Sandbox Code Playgroud)

谢谢

java

1
推荐指数
1
解决办法
566
查看次数

Java的.编写加载文件的最快方法

如何在最短的行数中将N行的文件加载到字符串的ArrayList中.

这就是我所拥有的,任何人都有关于如何减少行数和对象的任何建议?

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class FileLoad {

    public static void main(String[] args) throws IOException, FileNotFoundException {
        List<String> hs = new ArrayList<String>();
        BufferedReader br = new BufferedReader(new FileReader(args[0]));
        String line;
        while ((line = br.readLine()) != null) {
            hs.add(line);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java file-io

0
推荐指数
1
解决办法
74
查看次数