gpt4 book ai didi

Java 传入类型作为函数参数

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:10:40 25 4
gpt4 key购买 nike

我有 Python 背景,在 Python 中你可以将对象的类型作为参数传入。但是在 Java 中你不能这样做,关于如何让这样的东西工作的任何提示?

private void function(Type TypeGoesHere)
Stock s = new TypeGoesHere();
s.analyze();
}

最佳答案

Java 不支持 Python 引用函数和类的方式。要实现此行为,您必须使用两种高级技术:泛型和反射。解释这些概念超出了 SO 答案的范围。您应该阅读 Java 指南以了解它们。

这里有一个例子,假设给定的类有一个无参数的构造函数:

public <T extends Stock> void analyzeNewStock(Class<T> clazz) throws Exception {
Stock s = clazz.newInstance();
s.analyze();
}

然后用analyzeNewStock(MyStock.class)调用这个函数。

由于这是一种相当复杂且容易出错的方法,您宁愿定义一个接口(interface)来创建 Stock 实例:

public interface StockProvider {
Stock createStock(String value);
}

public class MyStockProvider implements StockProvider {
private final String valueTwo;

public MyStockProvider(String valueTwo) {
this.valueTwo = valueTwo;
}

@Override
public Stock createStock(String valueOne) {
return new MyStock(valueOne, valueTwo);
}
}

public class MyOtherClass {
public void analyzeNewStock(StockProvider provider) {
provider.createStock("Hi!").analyze();
}

public static void main(String[] args) {
analyzeNewStock(new MyStockProvider("Hey!"));
}
}

关于Java 传入类型作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31166484/

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