2015-10-21 80 views
0

我使用的是Spring批处理,因为我将类名称作为参数传递给读者,因此我想将其设置为我的目标类名。有一种方法可以从类名中获取类名String.I尝试使用反射,我正在成功获得该类。但我无法设置为我的目标类型 下面是我的代码。如何从字符串获取类名

reader.setTargetType((Class<? extends className>) className.class); 

它应该是::

@Bean(name = "jMongoReader") 
@StepScope 
public MongoItemReader<Object> jsonDataReader(@Value("#{jobParameters[name]}") String className) { 

    try { 

     Class cls= Class.forName(className); 
     reader.setTemplate(mongoConfig.getMongoTemplate()); 
     reader.setCollection("employeeInfo"); 
     reader.setTargetType((Class<? extends className>) className.class); 
     reader.setQuery("{}"); 
     Map<String, Direction> sorts = new HashMap<String, Sort.Direction>(1); 
     sorts.put("_id", Sort.Direction.ASC); 
     reader.setSort(sorts); 
     reader.setFields(keys); 
} 
+0

'className.class'总是'String'你的情况 –

回答

1

您在这条线上犯了一个错误

reader.setTargetType(cls); 
+0

顺便说一句,你不能做'Class <?用'className'扩展className>'变量。只有当它是一种类型时,你才能做到。 –

+0

是的,你是对的。谢谢 –