如何返回与使用Java 6传递的类相同类型的对象的实例?

前端之家收集整理的这篇文章主要介绍了如何返回与使用Java 6传递的类相同类型的对象的实例?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想返回一个传入的Class对象的类型的对象的实例.传入的类型可以是任意的.有没有办法用泛型?

澄清 – 我不希望方法调用者不必转换到他们传入的对象的Class

例如,

public Object<Class> getObject(Class class)
{
  // Construct an instance of an object of type Class

  return object;
}

// I want this:
MyClass myObj = getObject(MyClass.class);

// Not this (casting):
MyClass myObj = (MyClass)getObject(MyClass.class);

解决方法

我假设你想创建一个新的类的实例.这不可能使用泛型(你不能调用新的T()),也将是相当有限的使用反射.

反思方法可以是:

//class is a reserved word,so use clazz
public <T> T getObject(Class<T> clazz) {
  try {
    return clazz.newInstance();
  }
  catch( /*a multitude of exceptions that can be thrown by clazz.newInstance()*/ ) {
    //handle exception
  }
}

请注意,这仅在类具有无参数构造函数时有效.

但是,问题是为什么你需要,而不是调用新的WhatEverClassYouHave().

猜你在找的Java相关文章