确实用AI学习容易忽略细节,学到一些似是而非的东西。现在甚至可以借助AI来写基础的技术博客了。
import java.util.ArrayList;
import java.util.List;
/*
* 自定义泛型类(一个类适应多种类型)
* —— 通过泛型类 Box<T>,实现复用性强的通用容器
*/
class Box<T> {
private T content;
public Box(T content) {
this.content = content;
}
public T getContent() {
return content;
}
}
/*
* 有限制的泛型(确保类型有特定能力)
* —— 限定泛型参数必须是 Number 的子类,从而保证某些操作(如 doubleValue)是合法的
*/
class NumberContainer<T extends Number> {
private T value;
public NumberContainer(T value) {
this.value = value;
}
public double getSquare() {
return value.doubleValue() * value.doubleValue();
}
}
/*
* 主类,包含泛型示例入口
*/
public class GenericForBeginners {
public static void main(String[] args) {
// ====================
// 自定义泛型类(一个类适应多种类型)
// ====================
Box<Integer> intBox = new Box<>(123);
System.out.println("整数盒内容: " + intBox.getContent());
Box<String> strBox = new Box<>("Java真好学");
System.out.println("字符串盒内容: " + strBox.getContent());
// ====================
// 集合使用泛型(避免强制类型转换)
// ====================
List unsafeList = new ArrayList(); // ❌ 未使用泛型,不安全
unsafeList.add("hello");
unsafeList.add(100);
String text = (String) unsafeList.get(0); // 需要强制类型转换
// Integer num = (Integer) unsafeList.get(0); // ❌ 运行时报错
List<String> safeList = new ArrayList<>(); // ✅ 使用泛型,类型安全
safeList.add("hello");
// safeList.add(100); // ❌ 编译失败:类型不匹配
String safeText = safeList.get(0); // 无需强转
System.out.println("安全文本: " + safeText);
// ====================
// 泛型方法(方法适应多种类型)
// ====================
printThing(100); // 自动推断为 Integer
printThing(3.14); // 自动推断为 Double
printThing("泛型很简单"); // 自动推断为 String
// ====================
//有限制的泛型(确保类型有特定能力)
// ====================
NumberContainer<Double> doubleContainer = new NumberContainer<>(12.5);
System.out.println("平方值: " + doubleContainer.getSquare());
NumberContainer<Integer> intContainer = new NumberContainer<>(5);
System.out.println("平方值: " + intContainer.getSquare());
// ====================
// 类型推断(不用重复写类型信息)
// ====================
List<String> names = createList(); // 编译器自动推断出 T 为 String
names.add("小明");
names.add("小红");
System.out.println("\n名单:");
for (String name : names) {
System.out.println("- " + name);
}
}
// 技巧3:泛型方法(支持任何类型)
public static <T> void printThing(T thing) {
System.out.println("--- 打印内容: " + thing);
}
// 技巧5:类型推断(返回值带泛型,自动推断调用类型)
public static <T> List<T> createList() {
return new ArrayList<>();
}
}
运行结果
java GenericForBeginners
安全文本: hello
整数盒内容: 123
字符串盒内容: Java真好学
--- 打印内容: 100
--- 打印内容: 3.14
--- 打印内容: 泛型很简单
平方值: 156.25
平方值: 25.0
名单:
- 小明
- 小红
- THE END -
最后修改:2025年7月7日
非特殊说明,文章内容整理自互联网。
如若转载,请注明出处:https://www.links2fun.com/2025/07/04/java-template.html
共有 0 条评论