java - 通用对类

标签 java generics generic-programming

只是尝试我在过去的试卷中发现的这个问题,以便我可以为即将到来的 Java 考试做准备。

提供一个通用类 Pair 来表示成对的事物。该类应提供一个构造函数,一个获取对的第一个成员的方法,一个获取对的第二个成员的方法,一个设置对的第一个成员的方法,一个设置对的第二个成员的方法.该类应该通过两种类型进行参数化,一种用于第一个成员,一种用于第二个成员。

这是对这个问题的正确实现吗?

public class Pair<firstThing, secondThing>{
   private firstThing first;//first member of pair
   private secondThing second;//second member of pair

   public Pair(firstThing first, secondThing second){
     this.first = first;
     this.second = second;
   }

   public void setFirst(firstThing first){
    this.first = first;
   }

   public void setSecond(secondThing second) {
     this.second = second;
   }

   public thing getFirst() {
     return this.first;
   }

   public thing getSecond() {
     return this.second;
   }
}

最佳答案

差不多。我会这样写:

public class Pair<F, S> {
    private F first; //first member of pair
    private S second; //second member of pair

    public Pair(F first, S second) {
        this.first = first;
        this.second = second;
    }

    public void setFirst(F first) {
        this.first = first;
    }

    public void setSecond(S second) {
        this.second = second;
    }

    public F getFirst() {
        return first;
    }

    public S getSecond() {
        return second;
    }
}

编辑:我同意@karmakaze 的评论。代码应该跳过 setter 并使 first 和 second final 保持不变。

关于java - 通用对类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6044923/

相关文章:

java - 标记化方法: Split string into array

Java:线程 "main"java.lang.NullPointerException 中出现异常

generics - 泛型中的加号 (+) 是什么?

java - 通用方法 T 扩展

Java repaint() 在调用时不起作用

java - 使用正则表达式提取特定模式

scala - scala 中的循环类型参数定义

go - 遍历 []rune |在泛型中传递的字符串

c++ - 如何使用可变参数模板在 C++ 中概括对象创建?

c# - Linq 表达式 : Create a max query using a generic DbSet