cuốn sách gpt4 ai đã làm

java - 这是在 Java 中使用泛型的正确方法吗?

In lại Tác giả: Walker 123 更新时间:2023-11-29 04:29:24 26 4
mua khóa gpt4 Nike

class Matrix{
private List<>> attributes;

public Matrix(T type){
attributes = new ArrayList<>>();
attributes.add(new Attribute(type));
}
}

我觉得在构造函数中,这两行应该使用特定类型,而不是通用 T:

attributes = new ArrayList<>>();
attributes.add(new Attribute(type));

但是编译器并没有提示。那么这是定义此类的正确方法吗?

câu trả lời hay nhất

是的,这是正确的方法。唯一可能出错的地方是构造函数中的参数不应该是名称类型,而是值。类型为 T。

如果需要,您可以说您的 Generic 必须是其他东西的子类型。假设我们有一个包含异常的类。我们可以创建一个异常类型的成员变量。但是当从这个对象内部获取异常时,我们不想将我们的异常转换为更具体的异常。

所以我们使用一个 Generic,它必须是 Exception 的子类型:

public class SomeClass
{
private final T value;

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

public T getValue()
{
return this.value;
}
}

现在我们可以做这样的事情:

SomeClass obj = new SomeClass<>(new ArrayIndexOutOfBoundsException());
ArrayIndexOutOfBoundsException exc = obj.getValue(); // no cast from Exception to ArrayIndexOutOfBoundsException needed

关于java - 这是在 Java 中使用泛型的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44443303/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress