0
点赞
收藏
分享

微信扫一扫

java 泛型怎么new

Java 泛型怎么 new

Java 是一种面向对象的编程语言,其中的泛型机制使得代码更加灵活和可重用。泛型允许我们在类或方法中使用类型参数,这样可以在编译时进行类型检查,并提供了更好的类型安全性。

在 Java 中,泛型可以用于类、接口和方法。在使用泛型时,我们可以通过指定类型参数来创建泛型对象。

泛型类的创建

我们可以通过在类名后面加上尖括号<>和类型参数来定义泛型类。下面是一个简单的示例代码:

public class GenericClass<T> {
    private T value;

    public GenericClass(T value) {
        this.value = value;
    }

    public T getValue() {
        return value;
    }

    public void setValue(T value) {
        this.value = value;
    }
}

在上面的代码中,GenericClass是一个泛型类,它的类型参数是T。我们可以通过在创建对象时指定类型参数来创建泛型对象。

示例代码:

GenericClass<String> gc = new GenericClass<>("Hello");
String value = gc.getValue();
System.out.println(value); // 输出: Hello

上面的代码创建了一个GenericClass对象,它的类型参数是String。通过调用getValue方法可以获取到对象中存储的值。

泛型接口的创建

除了泛型类,我们还可以创建泛型接口。泛型接口的创建方式与泛型类类似,只是将类型参数放在接口名后面的尖括号<>中。

下面是一个示例代码:

public interface GenericInterface<T> {
    T getValue();
    void setValue(T value);
}

在上面的代码中,GenericInterface是一个泛型接口,它的类型参数是T。我们可以在实现该接口时指定具体的类型。

示例代码:

public class GenericInterfaceImpl implements GenericInterface<String> {
    private String value;

    @Override
    public String getValue() {
        return value;
    }

    @Override
    public void setValue(String value) {
        this.value = value;
    }
}

GenericInterface<String> gi = new GenericInterfaceImpl();
gi.setValue("Hello");
String value = gi.getValue();
System.out.println(value); // 输出: Hello

上面的代码创建了一个实现了GenericInterface接口的类GenericInterfaceImpl,它的类型参数是String。通过调用setValue方法设置对象中存储的值,再通过调用getValue方法获取到该值。

泛型方法的创建

除了泛型类和泛型接口,我们还可以创建泛型方法。泛型方法是指在方法声明中使用类型参数的方法。

下面是一个示例代码:

public class GenericMethod {
    public <T> void printValue(T value) {
        System.out.println(value);
    }
}

在上面的代码中,printValue是一个泛型方法,它的类型参数是T。我们可以在调用该方法时指定具体的类型。

示例代码:

GenericMethod gm = new GenericMethod();
gm.printValue("Hello"); // 输出: Hello
gm.printValue(123); // 输出: 123

上面的代码创建了一个GenericMethod对象,并调用了它的printValue方法,分别传入了String类型和Integer类型的参数。泛型方法根据传入的参数类型自动推断出具体的类型参数。

泛型的限定

在使用泛型时,我们可以对类型参数进行限定,以确保泛型对象满足特定的约束条件。我们可以使用extends关键字来限定类型参数。

下面是一个示例代码:

public class GenericConstraint<T extends Number> {
    private T value;

    public GenericConstraint(T value) {
        this.value = value;
    }

    public T getValue() {
        return value;
    }

    public void setValue(T value) {
        this.value = value;
    }
}

在上面的代码中,GenericConstraint是一个泛型类,它的类型参数T必须是Number类或其子类。这样就可以确保只能传入数字类型的参数。

示例代码:

GenericConstraint<Integer> gc = new GenericConstraint<>(123);
int value = gc.getValue();
System.out.println(value);
举报

相关推荐

0 条评论