gpt4 book ai didi

Java 泛型类型实例化

转载 作者:行者123 更新时间:2023-12-01 07:13:06 24 4
gpt4 key购买 nike

类似的问题还有很多,但似乎没有一个能具体回答我的问题。

如何实例化一个新的 T?

我有一个泛型方法,我需要在类型参数中返回该类型的新实例。这是我的代码...

class MyClass {

public static MyClass fromInputStream( InputStream input ) throws IOException {

// do some stuff, and return a new MyClass.

}
}

然后在一个单独的类中,我有一个像这样的通用方法......

class SomeOtherClass {

public <T extends MyClass>download(URL url) throws IOException {

URLConnection conn = url.openConnection();

return T.fromInputStream( conn.getInputStream() );

}
}

我还尝试了以下...

class SomeOtherClass {

public <T extends MyClass>download(URL url) throws IOException {

URLConnection conn = url.openConnection();

return new T( conn.getInputStream() ); // Note my MyClass constructor takes an InputStream...

}
}

但是上面的排列都无法编译!错误是:

File: {...}/SomeOtherClass.java
Error: Cannot find symbol
symbol : class fromInputStream
location : class MyClass

如有任何建议,我们将不胜感激!

最佳答案

我认为一种常见的方法是要求像这样传入类型 T 的类:

class SomeOtherClass {

public <T extends MyClass> T download(Class<T> clazz, URL url) throws IOException {

URLConnection conn = url.openConnection();

return clazz.getConstructor(InputStream.class).newInstance(conn.getInputStream() ); // Note my MyClass constructor takes an InputStream...

}
}

关于Java 泛型类型实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9959339/

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