gpt4 book ai didi

Java泛型工厂实现

转载 作者:行者123 更新时间:2023-12-01 09:22:12 24 4
gpt4 key购买 nike

解释我想要做的事情的最好方法可能是用代码。

Public class Product
Public class Vendor<T extends Product>

现在我正在尝试创建一个通用工厂,它将根据字符串输入参数为您提供供应商

   Public Factory {
public Vendor getInstance(String Type){
Class cls = Class.forName(Type);
return new Vendor<cls>();
}
}

我如何才能创建这个通用工厂?

最佳答案

好吧,如果您绝对想根据收到的参数创建 Vendor,则应该使用 Class 而不是 String。还可以对您的方法进行参数化,以确保您收到 T extends Product 类型。

public class Main {

static class Product {}
static class SubProd extends Product {}
static class Vendor<T extends Product> {}

public static <T extends Product> Vendor<T> getInstance(Class<T> clazz) {
return new Vendor<T>();
}

public static void main(String[] args) {
Vendor<SubProd> v = Main.getInstance(Main.SubProd.class);
System.out.println(v);
}
}

如您所见,类参数不直接使用,而是用于强制返回的供应商的类型。该代码编译并运行时不会出现警告、异常或强制转换。使用字符串时,您必须处理所有可能发生的异常,并且可能会到处进行丑陋的转换。

泛型非常强大,我相信这个小例子展示了一些可以用它们做的事情。但是,请注意,有时,有更简单、更优雅的方法来解决问题。

关于Java泛型工厂实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40103909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com