gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 19:41:22 26 4
gpt4 key购买 nike

我想返回一个与传入的类对象类型相同的对象实例。传入的类型可以是任何类型。有没有办法用泛型做到这一点?

澄清一下——我不希望方法的调用者不必强制转换为他们传入的对象的类

例如,

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()

关于java - 如何返回与使用 Java 6 传入的类类型相同的对象的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9790908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com