java 泛型的50种使用方式 并给出例子,写在一个main方法里
时间: 2024-05-04 21:21:45 浏览: 16
很抱歉,Java 泛型并没有50种使用方式。但是,Java 泛型的使用方式有很多,下面是一些常见的使用方式及其示例:
1. 定义泛型类
```java
public class MyList<T> {
private List<T> list = new ArrayList<>();
public void add(T element) {
list.add(element);
}
public T get(int index) {
return list.get(index);
}
}
// 使用
MyList<String> stringList = new MyList<>();
stringList.add("Java");
String str = stringList.get(0);
```
2. 定义泛型接口
```java
public interface MyInterface<T> {
T doSomething(T t);
}
// 使用
MyInterface<String> myInterface = new MyInterface<String>() {
@Override
public String doSomething(String s) {
return s.toUpperCase();
}
};
String result = myInterface.doSomething("java");
```
3. 定义泛型方法
```java
public class Utils {
public static <T> T getFirst(List<T> list) {
if (list == null || list.isEmpty()) {
return null;
}
return list.get(0);
}
}
// 使用
List<String> stringList = Arrays.asList("Java", "Python", "C++");
String firstElement = Utils.getFirst(stringList);
```
4. 限定类型参数
```java
public class MyClass<T extends Number> {
private T value;
public MyClass(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
// 使用
MyClass<Integer> myClass = new MyClass<>(10);
Integer value = myClass.getValue();
```
5. 通配符类型
```java
public class Utils {
public static void printList(List<?> list) {
for (Object obj : list) {
System.out.println(obj);
}
}
}
// 使用
List<String> stringList = Arrays.asList("Java", "Python", "C++");
Utils.printList(stringList);
```
6. 泛型数组
```java
public class MyArray<T> {
private T[] array;
public MyArray(int size) {
this.array = (T[]) new Object[size];
}
public void set(int index, T value) {
array[index] = value;
}
public T get(int index) {
return array[index];
}
}
// 使用
MyArray<String> stringArray = new MyArray<>(3);
stringArray.set(0, "Java");
stringArray.set(1, "Python");
stringArray.set(2, "C++");
System.out.println(stringArray.get(1));
```
7. 泛型嵌套
```java
public class MyPair<T1, T2> {
private T1 first;
private T2 second;
public MyPair(T1 first, T2 second) {
this.first = first;
this.second = second;
}
public T1 getFirst() {
return first;
}
public T2 getSecond() {
return second;
}
}
public class MyList<T> {
private List<MyPair<T, Integer>> list = new ArrayList<>();
public void add(T element, int count) {
list.add(new MyPair<>(element, count));
}
public MyPair<T, Integer> get(int index) {
return list.get(index);
}
}
// 使用
MyList<String> stringList = new MyList<>();
stringList.add("Java", 3);
stringList.add("Python", 2);
MyPair<String, Integer> pair = stringList.get(1);
System.out.println(pair.getFirst() + ": " + pair.getSecond());
```
这些只是泛型的一些常见用法,还有很多其他用法。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)