ListGenericFoo
package org.wp.generic;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ListGenericFoo<T extends List> {
private T[] fooArray;
public T[] getFooArray() {
return fooArray;
}
public void setFooArray(T[] fooArray) {
this.fooArray = fooArray;
}
public static void main(String args[]) {
ListGenericFoo<LinkedList> foo1 = new ListGenericFoo<LinkedList>();
ListGenericFoo<ArrayList> foo2 = new ListGenericFoo<ArrayList>();
LinkedList[] linkedList1 = new LinkedList[10];
ArrayList[] arrayList = new ArrayList[10];
foo1.setFooArray(linkedList1);
foo2.setFooArray(arrayList);
}
}
GenericFoo
package org.wp.generic;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
public class GenericFoo<T> {
private T foo;
public T getFoo() {
return foo;
}
public void setFoo(T foo) {
this.foo = foo;
}
public static void main(String args[]) {
GenericFoo<? extends List> foo = null;
foo = new GenericFoo<LinkedList>();
foo = new GenericFoo<ArrayList>();
GenericFoo<? super List> foo1 = null;
foo1 = new GenericFoo<Object>();
foo1 = new GenericFoo<Collection>();
GenericFoo<String> foo2 = new GenericFoo<String>();
foo2.setFoo("hello world");
// GenericFoo<?> 等价于 GenericFoo<? extends Object>
GenericFoo<? extends Object> foo3 = foo2;
System.out.println(foo3.getFoo());
foo3.setFoo(null);
System.out.println(foo3.getFoo());
// 错误 foo3.setFoo("welcome");
}
}
分享到:
相关推荐
#### 二、泛型的基础使用 **2.1 泛型类型的声明** 在定义泛型类或接口时,使用尖括号`<T>`来指定类型参数,其中`T`可以是任何有效的标识符。 ```java public class GenericClass<T> { private T value; public...
#### 二、Java 泛型概述 Java 泛型是一种允许编译器检查类型安全性的功能,并允许创建高度可重用的类和接口。通过使用泛型,开发者可以在运行时避免强制类型转换,并且能够编写更易于理解、维护和扩展的代码。 ###...
#### 一、泛型基础概念 泛型是现代编程语言中的一项重要特性,它允许开发者在不指定具体数据类型的情况下编写类或方法,从而达到代码重用的目的。在.NET Framework 2.0及以后版本中,泛型得到了广泛的应用和支持。...
一、泛型接口基础 1. 定义泛型接口:泛型接口通过在接口名称后添加尖括号`<T>`来声明,其中`T`是类型参数,代表一个未知的数据类型。例如: ```csharp public interface IMyGenericInterface { void Process(T ...
二、泛型的边界 1. 上界通配符:`? extends T`表示类型参数必须是`T`或其子类。这允许我们使用各种类型的对象,但只能调用那些不依赖具体类型的方法。 2. 下界通配符:`? super T`表示类型参数必须是`T`或其父类。这...
泛型在面试中是一个常考的话题,它不仅考察程序员对Java基础知识的掌握,也反映了对集合框架中类型安全和类型擦除的理解。在编写或阅读涉及泛型的Java代码时,理解其定义、工作原理、类型擦除的原因,以及通配符的...
C# 提供了丰富的泛型集合接口,如 `IList<T>`、`ICollection<T>`、`IEnumerable<T>` 和 `IDictionary, TValue>` 等,这些接口为开发泛型集合类提供了基础。 - **4.2.2 泛型约束** - **类型约束**:使用 `where` ...
OkGo是一款非常流行的网络库,它基于OkHttp进行了二次封装,提供了简洁、高效、易用的API,广泛应用于众多Android项目中。本篇文章将详细介绍OkGo的最新特性以及如何在Android项目中进行泛型返回的网络请求。 首先...
在"02 第二讲 泛型"的学习资源中,你可能涵盖了以下内容: 1. **基础语法**:如何声明和使用类型参数,如创建泛型类、泛型方法的示例。 2. **泛型集合**:对`List<T>`、`Dictionary, TValue>`等常用泛型集合的用法...
#### 二、泛型的概念与意义 ##### 2.1 什么是泛型? 泛型(Generics)是指在面向对象编程中,通过参数化类型来达到类型重用的目的。通俗地说,就是将类或方法中的某些类型定义为参数形式,在实际使用时再传入具体...
本文将详细探讨Java泛型的基础概念、工作原理以及如何在实际开发中有效地使用泛型。 #### 二、Java泛型编程的重要性 Java泛型编程的主要目的是提高代码的复用性和类型安全性。在没有泛型之前,开发者通常使用...
本文旨在详细介绍泛型的基础知识及其在 C# 中的应用,并探讨其背后的原理。 #### 二、理解泛型 ##### 2.1 泛型的基本概念 泛型是一种高级编程技术,它允许程序员编写能够处理多种类型但又具有类型安全性的代码。...
#### 二、泛型的基础概念 泛型是一种允许我们在类、接口或方法级别上使用类型参数的特性。这些类型参数可以在运行时由具体的类型替换,从而实现了代码的复用性和灵活性。 **优点:** 1. **类型安全性**:泛型提供...
- 伴随的定义特性与编程中的β-规则、η-规则和融合定律相对应,这些规则是编程代数的基础,也是泛型编程中的优化原则。 #### 四、递归方案中的伴随应用 - **编程代数**通常基于**初始代数**理论,其中程序以折叠的...
1. **泛型基础**: - 泛型引入了类型参数的概念,例如 `<T>`,其中 `T` 是一个占位符,代表任意类型。 - 使用泛型可以确保在编译时进行类型检查,避免运行时错误。 - 泛型方法允许我们在方法定义中使用类型参数,...
1.更适合零基础学员: ·自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练习,让你步步为营,学得透彻、练得明白 ·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅出,迅速让你...
通过本文的学习,我们不仅了解了C#2.0中泛型的基础概念,而且还深入了解了泛型的优点、基本使用以及一些高级特性。泛型为C#开发提供了强大的工具,使得代码更加灵活、高效且易于维护。对于希望提升代码质量和性能的...
#### 二、泛型编程 - **定义**:泛型编程是一种编程范式,允许开发者编写能够处理多种类型的数据的代码,通过将类型参数化,达到代码的灵活性和复用性。这种技术的核心在于使用模板(template)来创建可以适用于多种...
#### 二、Java泛型基础 **2.1 泛型类的定义** Java泛型最基础的概念之一是泛型类。泛型类是指在定义类时,将类中的某种数据类型用作参数的一种方式。这种参数类型可以被用于类中的某些成员变量或方法中,从而使得...