当前位置: 首页 > 面试题库 >

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

佟阳焱
2023-03-14
问题内容

我想返回与传入的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);

问题答案:

我假设您想创建该类的新实例。使用泛型是不可能的(您不能调用new 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
  }
}

请注意,这仅在类具有无参数构造函数的情况下有效。

但是,问题将出在为什么您需要它而不是仅仅调用
new WhatEverClassYouHave()



 类似资料:
  • 问题内容: 我是android和java的初学者。我不明白什么时候对象传递。对象传递当然需要实现Serializable。 0.什么时候使用Serializable?它是什么? 1.什么是对象和捆绑类 2.使用Object和Bundle传递对象时 3.是否支持Object和Bundle对象都是数据类型的对象? 请帮助我。谢谢 问题答案: 您的要求确实很模糊,但是可序列化的对象可以转换为可以反序列化

  • 问题内容: 我对此进行了扩展,应该可以帮助我在上下文之间传输对象: 现在它返回的对象,我应该将其强制转换为我想要的类,如下所示: 有没有办法避免这种无用的转换,如果我从类的对象调用使其返回类型? 问题答案: 更新: 有关更好的解决方案 与如何在NSManagedObjectSwift扩展中如何创建托管对象子类的实例中类似,这可以使用通用的辅助方法来完成: 请注意,我已将返回类型更改为。 并 没有

  • 然后mocked repository返回传递给它的内容,我可以轻松地测试它。 有什么想法吗?如何强制mockito返回?

  • 我正在寻找一种将long或long转换为从Number派生的类型的方法: 问题在于方法。当前代码不起作用。如何从中获取,它是一个?当然有一个简单的方法可以做到这一点。。。

  • 本文向大家介绍JAVA利用泛型返回类型不同的对象方法,包括了JAVA利用泛型返回类型不同的对象方法的使用技巧和注意事项,需要的朋友参考一下 有时需要在方法末尾返回类型不同的对象,而return 语句只能返回一个或一组类型一样的对象。此时就需要用到泛型。 首先先解释个概念, 元组:它是将一组对象直接打包存储于其中的一个单一对象,这个容器对象允许读取其中元素,但不能修改。 利用泛型创建元组 测试 输出

  • 当我保存以下实体时,它在另一个对象中复制相同的值: 例如,在我的struts项目(屏幕)中,如果我更改shipmentShipper字段的值,那么Shipment收货人也将使用相同的值进行更新。 实体: 仓库类: JSP中的字段映射(工作正常): 请检查屏幕截图,我将发货人更改为C4并保存。收货人也被选为C4。请注意,两个选择都使用相同的数据列表填充。(客户名单)