Java 从泛型方法调用重载方法
如何创建一个可以调用重载方法的泛型方法? 我试过了,但它给出了一个编译错误 java:19:不兼容的类型 找到:java.lang.Object 必填项:T T newt=getCloneOf(T); ^Java 从泛型方法调用重载方法,java,generics,Java,Generics,如何创建一个可以调用重载方法的泛型方法? 我试过了,但它给出了一个编译错误 java:19:不兼容的类型 找到:java.lang.Object 必填项:T T newt=getCloneOf(T); ^ import java.util.*; public class Test { private Object getCloneOf(Object s) { return new Object(); } private String getCloneOf(String s) {
import java.util.*;
public class Test {
private Object getCloneOf(Object s) {
return new Object();
}
private String getCloneOf(String s) {
return new String(s);
}
private <T> Set<T> getCloneOf(Set<T> set){
Set<T> newSet = null;
if( null != set) {
newSet = new HashSet<T>();
for (T t : set) {
T newt = getCloneOf(t);
newSet.add(newt);
}
}
}
}
import java.util.*;
公开课考试{
私有对象getCloneOf(对象s){
返回新对象();
}
私有字符串getCloneOf(字符串s){
返回新字符串;
}
私有集getCloneOf(Set){
设置newSet=null;
如果(空!=设置){
newSet=newhashset();
用于(T:集){
T newt=getCloneOf(T);
新闻集添加(newt);
}
}
}
}
变量T
只能设置为等于类T
的对象或其子类之一。在您的例子中,getCloneOf()
返回的是一个对象,它不是t
的子类,甚至不一定是t
的子类
例如:
class Parent {
public void doStuff(){
}
}
class Child extends Parent {
public void doDifferentStuff(){
}
}
这没关系:
Parent p = new Child();
因为即使p是子类对象,这也会起作用,因为它从父类继承了该函数:
p.doStuff();
这不好:
Child c = new Parent();
因为这在理论上是可行的,因为变量的类型是Child,但是如果允许上一行,那么这会因为父对象没有具有该名称的函数而崩溃
c.doDifferentStuff();
呃,您是否希望每种可能的类型都有一个getCloneOf
方法??我的意思是,如果T
是Integer
,你希望发生什么?@asela38我想看看是否有办法克隆参数化类型,但问题是Object。克隆()
是受保护的,除非类实现ICloneable
,而新的T()
也不起作用。六羟甲基三聚氰胺六甲醚。。。