java - 如何设置类名?

标签 java generics

我的代码是:

public static <K, V> void initMapperJob( Job job,
        Collection<WebPage.Field> fields,  Class<K> outKeyClass, Class<V>
        outValueClass,   Class<? extends GoraMapper<String, WebPage, K, V>> mapperClass,     
        Class<? extends Partitioner<K, V>> partitionerClass, boolean reuseObjects)   
        throws ClassNotFoundException, IOException {
               DataStore<String, WebPage> store = createWebStore(job.getConfiguration(), String.class,    WebPage.class );
            ........ 
    }

我改变如下:

        public static <K, V, P extends PersistentBase, F extends Fields> void initMapperJob(Job job,
          Collection<F> fields,
          Class<K> outKeyClass, Class<V> outValueClass,
          Class<? extends GoraMapper<String, P, K, V>> mapperClass,
          Class<? extends Partitioner<K, V>> partitionerClass, boolean reuseObjects)
      throws ClassNotFoundException, IOException {

        DataStore<String, P> store = createWebStore(job.getConfiguration(),
            String.class, P.class );

....
      }

我的问题是:如何通过java为以下行设置泛型类?

DataStore store = createWebStore(job.getConfiguration(), String.class, P.class );

如果我这样设置(P.class或P),就会发生错误。

调用以下方法。

public static <K, V extends Persistent> DataStore<K, V> createWebStore(Configuration conf,
      Class<K> keyClass, Class<V> persistentClass){...}

最佳答案

您需要添加 Class<P> 类型的参数并使用它(而不是 P.class)。然后您需要转到 initMapperJob() 的站点并将该额外参数添加到调用中。

    public static <K, V, P extends PersistentBase, F extends Fields> 
    void initMapperJob(Job job,
      Collection<F> fields,
      Class<K> outKeyClass, Class<V> outValueClass,
      Class<? extends GoraMapper<String, P, K, V>> mapperClass,
      Class<? extends Partitioner<K, V>> partitionerClass, 
      boolean reuseObjects,
      Class<P> pClass) throws ClassNotFoundException, IOException {

    DataStore<String, P> store = createWebStore(job.getConfiguration(),
        String.class, pClass);

    ....
  }

关于java - 如何设置类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17815218/

相关文章:

java - 如何在ArrayList<中添加元素?通过方法扩展 SomeType>

java - 三叶草3.1.7不支持Java 7 Diamond

c# - 如何编写一个可以使用泛型从任何类输出数据的方法?

java - Java 中的泛型特化

c# - 删除 List<T> 中的备用元素

java - 扩展通用抽象类并正确使用 Super

java - 如何在 Java 中格式化多个字符串参数

java - 在 hashmap 中一般实现方法中传递参数

java - 使用 Spring Batch 水平扩展外部流程执行

java - 如何解决此未经检查的强制转换警告?