实现泛型函数PairUtil.swap,该函数的参数是Pair对象,该函数返回一个Pair,调换Pair里的第一个与第二个元素。部分代码如下:
public class PairTester
{
  public static void main(String[] args)
  {
    Pair<String, Integer> p = new Pair<String, Integer>(
         “Lucky Number”, 13);
    Pair<Integer, String> q = PairUtil.swap(p);
    System.out.println(q.getFirst());
    System.out.println(“Expected: 13”);
    System.out.println(q.getSecond());
    System.out.println(“Expected: Lucky Number”);
  }
}
哪位给出代码的实现,关键是不知道pair作为函数的参数该如何处理

解决方案 »

  1.   

    class Pair{
    private Object a;
    private Object b;
    public Pair(String a,Integer b){
    this.a = a;
    this.b = b;
    }
    public Pair(Integer b,String a){
    this.a = a;
    this.b = b;
    }
    public Object getA() {
    return a;
    }
    public void setA(Object a) {
    this.a = a;
    }
    public Object getB() {
    return b;
    }
    public void setB(Object b) {
    this.b = b;
    }


    }
    class PairUtil{
    public static void swap(Pair p){
    Object o = p.getA();
    p.setA(p.getB());
    p.setB(o);
    }
    }看来看去这的代码也没有任何的实用价值
    泛型只是一个约束而已
      

  2.   

    可能说的不清楚,这道题目的意思是把一个pair对象p里的两个元素“Lucky Number”和13对调,生成另一个pair对象q,需要给出进行对调操作的函数swap的实现。原题中给出了部分代码(这些代码是用于检测swap函数的):
    public class PairTester
    {
      public static void main(String[] args)
      {
        Pair<String, Integer> p = new Pair<String, Integer>(
          “Lucky Number”, 13);
        Pair<Integer, String> q = PairUtil.swap(p);
        System.out.println(q.getFirst());
        System.out.println(“Expected: 13”);
        System.out.println(q.getSecond());
        System.out.println(“Expected: Lucky Number”);
      }
    }
    哪位给出代码的实现,关键是不知道pair作为函数的参数该如何处理
      

  3.   

    是不是应该写成
    Pair<T,s>
    {
    ...
    }
    这样的形式啊
      

  4.   

    设p.getFirst() 返回  Lucky Number
    p.getSecond() 返回 13/** PairUtil.swap*/
    public static Pair<Integer, String> swap(Pair<String, Integer> p){
        return new Pair<Integer, String>(p.getSecond(),p.getFirst());
    }
      

  5.   


    class Pair<T1, T2> {
    private T1 first;
    private T2 second; public T1 getFirst() {
    return first;
    }
    public T2 getSecond() {
    return second;
    }
    public Pair(T1 first, T2 second) {
    this.first = first;
    this.second = second;
    }
    }
    class PairUtil{
    public static <T1,T2> Pair<T2,T1> swap(Pair<T1,T2> pair){
    T1 first = pair.getFirst();
    T2 second = pair.getSecond();
    Pair<T2,T1> ret = new Pair<T2,T1>(second,first);
    return ret;
    }
    }
    public class PairTest {
    public static void main(String[] args) {
    Pair<String, Integer> p = new Pair<String, Integer>("Lucky Number", 13);
    Pair<Integer, String> q = PairUtil.swap(p);
    System.out.println(q.getFirst());
    System.out.println("Expected: 13");
    System.out.println(q.getSecond());
    System.out.println("Expected: Lucky Number");
    }
    }
      

  6.   

    public static <T1,T2> Pair<T2,T1> swap(Pair<T1,T2> pair){
    请问为什么要写成这样啊,
    <T1,T2> Pair<T2,T1>这个是什么意思,
    如果不写前面的<T1,T2>,直接写成
    public static Pair<T2,T1> swap(Pair<T1,T2> pair){
    行不行,为什么