某些实现一个接口的类,必须有两个常量,记录该类的两个默认值,供外部访问,如:public class MyClass implements Iface {
  static final String name="abc";
  static final int num=12;
  ...
}
如果仅仅要求大家在类中必须写这两个常量,而没有约束或提示,似乎不够好,于是在接口中加一个方法:public class returnValue<A,B>{
  public final A name;
  public final B num;
  public ReturnValue(A a,B b){
    name=a;
    num=b;
  }
}
public interface Iface {
  ReturnValue<String ,Integer> getReturnValue();
  ....
}
//实现类里就必须有这个方法了
public class MyClass implements Iface {
  public ReturnValue<String ,Integer> getReturnValue(){
    return new ReturnValue<String,Integer>("abc",12);
  }
  ...
}我想知道,这样是好的做法吗?

解决方案 »

  1.   

    在接口定义的变量,在不同的实现类中可以指定不同的值吗?
    我记得在接口中的域全部是static和final的,不是吗?
      

  2.   

    Quote=引用 3 楼 berg369 的回复:]
    在接口定义的变量,在不同的实现类中可以指定不同的值吗?
    我记得在接口中的域全部是static和final的,不是吗?
    [/Quote]确实不能,如果每个实现类要不同的我试了一下,你这样写的比较活但你这样写,多写了一个类,有点像代理模式
    那很多业务方法都会在returnValue实现了,
    如果常量在MyClass 赋值那就完美了
      

  3.   

    多的这一个是元组类,也叫数据传送对象或信使--这是《java编程思想》讲范型的一个例子,讲如果希望一个方法返回多个值,就需要一个元组类来实现。我想知道我用这种方式实现是否是好的、经典的做法,有没有更好的方法。
      

  4.   

    我总结一下吧:
    这种方式不好!没有必要用范型,直接写一个类就行,用范型在这种情况下可能会导致错误的使用,因为想返回的是(String,int),用范型类实际上可以返回任意类。