Java 从泛型方法调用重载方法

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

如何创建一个可以调用重载方法的泛型方法? 我试过了,但它给出了一个编译错误

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) {
  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()
也不起作用。六羟甲基三聚氰胺六甲醚。。。