当前位置: 首页 > 面试题库 >

使用接口或类型在Java中定义变量?

王才
2023-03-14
问题内容
ArrayList aList = new ArrayList();

List aList = new ArrayList();

两者之间有什么区别,哪个更好使用?为什么?


问题答案:

List<T>是interface,哪里ArrayList<T>是class,并且此类实现List<T>接口

我希望使用第二种形式,这种形式更通用,即如果您不使用特定于方法的方法,则ArrayList<T>可以将其类型声明为接口List<T>类型。使用第二种形式,将实现从实现更改ArrayList<T>为实现List<T>接口的其他类将变得更加容易。

编辑:
由于许多SO用户都评论了这两种形式都可以是接受List<T>或的任何方法的参数ArrrayList<T>。但是当我声明方法时,我更喜欢接口:

 void showAll(List <String> sl) ...

并使用:

 void showAllAS(ArrayList <String> sl) ...

仅当我的方法使用特定于的方法时ArrayList<T>,例如ensureCapacity()

我们应该使用类型化List<T>而不是类型化的信息的响应List非常好(当然,如果我们不使用古老的Java)。



 类似资料:
  • 我正在使用一个接口来定义一个新类型。这是正确的做法吗?我做如下: 然后,为了实例化它,我必须这样做: 它实际上创建了一个空对象,这不是我想要的;但是如果没有这个,它会引发一个错误,例如,“无法读取未定义的属性‘问题’”。我定义新类型的方法是错误的吗? ====EDIT====以下是我根据你的评论所做的: 然后我说: 然后我仍然得到这个错误:无法读取未定义的属性“push”。我不想在定义接口的地方启

  • 我正在编写一个代码,它取两个点,确定两个点的大小,比较它们,并返回哪个更大。我有我的主类和方法来运行所有的东西,然后还有另一个类点来实现我的接口。但是,我无法使从接口调用的方法正常工作。我的代码是: 当我尝试运行它时,我得到错误“exception in thread”main“java.lang.nullPointerException:不能调用”point.getMetality()“,因为”

  • 我想实现一个接口,它包含一系列函数和属性,很少函数需要在回调模式下工作。例如: 我想执行generateData函数并在作业完成后通知。例如: 我完全误解了接口中回调的语法和调用。如果有人举例说明,那就太好了。

  • 本文向大家介绍在Java中将预定义的类名用作类或变量名,包括了在Java中将预定义的类名用作类或变量名的使用技巧和注意事项,需要的朋友参考一下 使用预定义的类名作为类名 让我们看一个例子- 示例 输出结果 Number类包含一个main函数,该函数在执行时显示一条消息。main函数将字符串值作为参数。 使用预定义的类名作为变量名 让我们看一个例子- 示例 输出结果 String类的main函数是在

  • 我想定义一个带有对象和不同类型的接口,例如 在定义上,没有问题,但在调用like后 这不起作用,并出现以下错误 错误错误:未捕获(promise中):TypeError:无法设置未定义的属性“名称”TypeError:无法设置未定义的属性“名称” 有一些相似的主题,但它们并不完全相关。(如何在类型脚本接口中定义对象或者如何在类型脚本中定义对象变量的类型?) 我很感激你帮助我找到解决办法。

  • 问题 你想定义一个接口或抽象类,并且通过执行类型检查来确保子类实现了某些特定的方法 解决方案 使用 abc 模块可以很轻松的定义抽象基类: from abc import ABCMeta, abstractmethod class IStream(metaclass=ABCMeta): @abstractmethod def read(self, maxbytes=-1):