2017-07-10 51 views
-1

我想创建一个SpecificDatumReader类的名字是作为一个字符串传入的。我可以创建这些类中的一个,并且我可以获得此类的Class,但其中没有一个允许我创建模板对象。在Java中,如何从类型名称生成模板对象?

String[] classList = conf.getClasslist(eventname); 
    decoders = new LinkedList<SpecificDatumReader>(); 
    for (String className : classList) 
    { 
     Class<?> eventclass = Class.forName(className); 
     Object holder = eventclass.newInstance(); 
     decoders.add(new SpecificDatumReader<WhatGoesHere?>(eventclass)); 
    } 
+2

Java没有模板类型,泛型是编译时类型检查功能(另请参阅* type erasure *)。 –

+2

请勿使用原始类型。 – shmosel

+1

鉴于(正如Elliott所说)泛型是一种编译类型检查功能,我不相信当你创建对象时你需要告诉程序类型参数是什么,因为它不会被存储在你的无论如何。所以只是'新的SpecificDatumReader (不管)'应该可以正常工作。 – ajb

回答

0

你不能。

  1. Java没有模板。您发布的语法的正确名称是泛型。
  2. 你问的参数是编译时常量(类名),而不是运行时变量。