在Java中,我们可以使用泛型来扩展“ArrayList”并实现接口。下面是一个示例,说明如何创建一个通用的“ArrayList”,它可以存储实现了“ISomeInterface”接口的对象。
定义接口“ISomeInterface”:
公共接口ISomeInterface {
void someMethod;
然后,我们创建一个通用的“ArrayList”,它可以存储实现了“ISomeInterface”接口的对象。
import java. util. ArrayList;
公共类GenericArrayList {
ate Ar(英语:ate Ar)
公共void添加T项{
list. add item;
公共T获得int索引{
返回列表.获取索引;
公众大小{
返回列表大小;
在此示例中,我们使用了通用'T'来限制它必须是'ISomeInterface'的子类,以便'GenericArrayList'只能存储实现了'ISomeInterface'接口的对象。
我们可以创建一个实现'ISomeInterface'接口的类,并将其添加到通用的'ArrayList'中:
公共类SomeClass implements ISomeInterface {
@Override
public void someMethod {
System. out. println "SomeClass is Implementing ISomeInterface";
创建一个'GenericArrayList'对象,并添加一个'SomeClass'的实例:
公共类主{
public static void main String[] args {
genericList =新的genericList <>
genericList. add new someClass;
genericList. add new someClass;
genericList. add new someClass;
关于ISomeInterface genericList {
item. someMethod;
当我们运行上面的代码时,我们将打印出以下内容:
Some Class实现了ISomeInterface
Some Class实现了ISomeInterface
Some Class实现了ISomeInterface
通过使用泛型和接口,您可以创建通用“ArrayList”,该“ArrayList”可以存储实现了特定接口的对象,从而提高了代码的重用性和灵活性。
让我们给你两个与这篇文章相关的问题和答案:
问题1:为什么我需要使用泛型来扩展`ArrayList`?有哪些优势?
答:泛型的使用提供了类型安全和编译时检查。通过将ArrayList限制为仅存储在实现了特定接口的对象中,可以避免运行时类型错误。它还提高了代码的可读性和可重用性。在上面的例子中,我们可以使用泛型来指定列表中元素的类型,而不需要在使用列表时进行类型转换。
问题2:如果我想创建一个通用的“ArrayList”,可以容纳任何类型的对象,我应该如何实现它?
答:如果要创建泛型`ArrayList`,可以不使用泛型,也可以将泛型类型参数限制为通配符(`)
import java. util. ArrayList;
import java. util. List;
公共类GenericArrayList {
private List<> list = new ArrayList<>;
public void add item {
list. add item;
公共获取int index {
返回列表.获取索引;
在这个例子中,我们没有使用泛型来限制列表中元素的类型。请注意,泛型'ArrayList'可以存储任何类型的对象,但这将失去类型安全和编译时检查的优点。如果使用泛型“ArrayList”,则必须确保在添加和检索元素时进行了正确的类型转换。