Java 使用泛型而不强制转换来限制传递给参数的类的类型
让我们假设我有一个实现,它能够将特定格式的字符串转换为指定类的对象Java 使用泛型而不强制转换来限制传递给参数的类的类型,java,generics,Java,Generics,让我们假设我有一个实现,它能够将特定格式的字符串转换为指定类的对象 public interface Translator { <T> T convertToObject(Class<T> clazz, String msg); } 公共接口转换器{ T convertToObject(类clazz,字符串msg); } 我有一个类使用它,如下所示: public <T> T proccessMessage(Class<? extends R
public interface Translator {
<T> T convertToObject(Class<T> clazz, String msg);
}
公共接口转换器{
T convertToObject(类clazz,字符串msg);
}
我有一个类使用它,如下所示:
public <T> T proccessMessage(Class<? extends Response> responseCls,String msg) {
return (T) translator.convertToObject(responseCls, msg);
}
public T processmessage(Class由于您将Class参数限制为Response
的子类,因此我相信您的方法签名应该如下所示:
public <T extends Response>
T proccessMessage(Class<? extends T> responseCls, String msg)
{
return translator.convertToObject(responseCls, msg);
}
公共
T processMessage(Class由于您将Class参数限制为Response
的子类,因此我相信您的方法签名应该如下所示:
public <T extends Response>
T proccessMessage(Class<? extends T> responseCls, String msg)
{
return translator.convertToObject(responseCls, msg);
}
公共
T PROCESSMESSAGE(Class对于作为参数传递给translator的类和返回的类型,必须使用相同的类型,因为接口中是这样定义的:
public <T extends Response> T proccessMessage(Class<T> responseCls,String msg) {
return translator.convertToObject(responseCls, msg);
}
public T进程消息(类响应、字符串消息){
返回translator.convertToObject(responseCls,msg);
}
对于作为参数传递给translator的类和返回的类型,必须使用相同的类型,因为接口中是这样定义的:
public <T extends Response> T proccessMessage(Class<T> responseCls,String msg) {
return translator.convertToObject(responseCls, msg);
}
public T进程消息(类响应、字符串消息){
返回translator.convertToObject(responseCls,msg);
}
您不能使用类型参数进行强制转换,因为come runtime JVM不知道类型参数。您不能使用类型参数进行强制转换,因为come runtime JVM不知道类型参数。