gpt4 book ai didi

java - 如何传递泛型类型 ('Object myVar' ) 作为参数来替换类类型 ('SomeClass.class' )?

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

如何将类类型作为参数传递?

public Configuration getConfig(Object mapper, Object format) {
Configuration conf = new Configuration(false);
conf.setClass("mapreduce.map.class", TestMapper.class, Mapper.class);
conf.setClass("mapreduce.inputformat.class", DatastoreInputFormat.class, InputFormat.class);
return conf;
}

我想用参数 mapperformat 替换值 TestMapper.classDatastoreInputFormat.class ,分别。

我不确定如何从 Object 转换为 TestMapper.class

最佳答案

getConfig() 的参数可能应该首先具有 Class 类型,而不是 Object 类型。但是:

如果您想要任何映射器和格式对象的运行时类,只需调用它们的 .getClass() 方法即可。

 conf.setClass("mapreduce.map.class",mapper.getClass(), Mapper.class);
conf.setClass("mapreduce.inputformat.class",format.getClass(),InputFormat.class);

所以,如果你的mapper方法参数实际上是 TestMapper 的一个实例,mapper.getClass() 将返回与 TestMapper.class 相同的对象。

如果您的mapperparameter已经是 .class 对象,即您已将该方法调用为 foo.getConfig(TestMapper.class,DatastoreInputFormat.class);您可以将对象转换回 Class 对象,假设 conf.setClass() 采用 Class<?>类型:

conf.setClass("mapreduce.map.class",(Class<?>)mapper, Mapper.class);
conf.setClass("mapreduce.inputformat.class",(Class<?>)format,InputFormat.class);

关于java - 如何传递泛型类型 ('Object myVar' ) 作为参数来替换类类型 ('SomeClass.class' )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6575609/

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