Java中泛型是一种参数化类型的概念,可以让类或方法在定义时不确定某些类型,而是在使用时再指定具体的类型。Java中的泛型分为泛型类和泛型方法两种。

泛型类: 泛型类是指在定义类时使用了泛型参数,这个泛型参数可以用于类中的任何位置,例如定义变量、方法、构造函数等。泛型类的定义方式如下:

public class MyClass<T> {
    private T value;
    
    public MyClass(T value) {
        this.value = value;
    }
    
    public T getValue() {
        return value;
    }
    
    public void setValue(T value) {
        this.value = value;
    }
}

在上述示例中,MyClass类的定义中使用了一个泛型参数T,可以用于类中的任何位置,包括成员变量value和方法getValue()、setValue()。这样,在使用MyClass类时,就可以指定具体的类型,例如:

MyClass<String> str = new MyClass<>("hello");
String s = str.getValue(); // "hello"

泛型方法: 泛型方法是指在定义方法时使用了泛型参数,这个泛型参数只能用于该方法中。泛型方法的定义方式如下:

public class MyClass {
    public <T> T myMethod(T value) {
        return value;
    }
}

在上述示例中,myMethod()方法的定义中使用了一个泛型参数T,只能用于该方法中。这样,在调用myMethod()方法时,就可以指定具体的类型,例如:

MyClass obj = new MyClass();
String s = obj.myMethod("hello"); // "hello"
Integer i = obj.myMethod(123); // 123
复制代码

总之,Java中的泛型可以让类或方法具有更大的通用性和灵活性,可以减少代码的冗余和提高代码的复用性。