Java 如何使用泛型对象的函数

Java 如何使用泛型对象的函数,java,generic-programming,Java,Generic Programming,实现一个类HashTable1,其函数采用K类型的泛型参数键。在实数中,键是类对的对象。那么,我如何访问类HasTable1中key的实例变量(fname和lname) class HashTable1<K,T> implements MyHashTable_<K,T>{ BST[] bt; int hashtablesize; HashTable1(int n){ bt = new BST[n]; this.hashta

实现一个类HashTable1,其函数采用K类型的泛型参数键。在实数中,键是类对的对象。那么,我如何访问类HasTable1中key的实例变量(fname和lname)

class HashTable1<K,T> implements MyHashTable_<K,T>{
   BST[] bt;
   int hashtablesize;

    HashTable1(int n){
       bt = new BST[n];
       this.hashtablesize=n;
     }

     public int insert(K key,T obj){
         String str = key.toString();
         long index = Hashfunctions.djb2(str,this.hashtablesize);
         return bt[(int)index].insert(key.getf(),obj); //error at              key.getf()
     }

    class Pair {
      String fname;
      String lname;

    Pair(String fname,String lname){
       this.fname=fname;
       this.lname=lname;
    }

    public String getf (){
       return this.fname;
    }
    public String getl(){
       return this.lname;
    }

    public String toString()
    {
        return String.format(this.fname+this.lname);
}

}
类HashTable1实现MyHashTable_{ 英国标准时间[]英国电信; int哈希表大小; 哈希表1(int n){ bt=新的BST[n]; this.hashtablesize=n; } 公共整数插入(K键,T对象){ 字符串str=key.toString(); long index=Hashfunctions.djb2(str,this.hashtablesize); 返回bt[(int)index].insert(key.getf(),obj);//key.getf()处出错 } 类对{ 字符串fname; 字符串名称; 配对(字符串fname,字符串lname){ this.fname=fname; this.lname=lname; } 公共字符串getf(){ 返回此.fname; } 公共字符串getl(){ 返回此.lname; } 公共字符串toString() { 返回String.format(this.fname+this.lname); } }
对于您当前的代码,
key
必须是
Pair
类型,如果您想使用
key.getf
。您应该重新考虑是否需要
Pair
类。但是我必须使用泛型类型来实现它,并且必须使用Pair类。这是理解Java泛型的练习,还是做y你真的需要一个
Map
数据结构,其密钥类是
Pair
?如果该类专门用于
Pair
密钥,那么它就不是泛型的。至少,它在密钥方面不是泛型的。但是,在哈希表级别使用方法访问密钥是没有意义的,因为哈希表将包含许多密钥YES。请考虑将您的作业定义添加到您的问题中。