实现泛型函数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作为函数的参数该如何处理
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作为函数的参数该如何处理
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);
}
}看来看去这的代码也没有任何的实用价值
泛型只是一个约束而已
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作为函数的参数该如何处理
Pair<T,s>
{
...
}
这样的形式啊
p.getSecond() 返回 13/** PairUtil.swap*/
public static Pair<Integer, String> swap(Pair<String, Integer> p){
return new Pair<Integer, String>(p.getSecond(),p.getFirst());
}
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");
}
}
请问为什么要写成这样啊,
<T1,T2> Pair<T2,T1>这个是什么意思,
如果不写前面的<T1,T2>,直接写成
public static Pair<T2,T1> swap(Pair<T1,T2> pair){
行不行,为什么