1、
private XXX aa;
public XXX getAa(){
   if (aa == null){
      aa = new XXX()
   }
   return aa;
}2、
YYY继承了XXX
private XXX aa;
public YYY getAa(){
    return (YYY) aa;
}这两者getAa频繁调用,会不会存在性能问题?浪费时间在判断或转换上?

解决方案 »

  1.   

    对,如果要提高效率的话,private XXX aa,把aa定义成static
      

  2.   


    》》第二种方法比较好一些!第一种每次可能会实例化一个对象
    这是两个问题,两者之间没有关系》》对,如果要提高效率的话,private XXX aa,把aa定义成static
    不能static,那所有的实例只会读取一个值呀,》》第二种方法比较好一些!第一种每次可能会实例化一个对象
    系统有事先判断是否为null,所以不会老实例化对象
      

  3.   

    第一个,如果getAa()需要被频繁调用,而new XXX()的开销又不是很大,那就在构造的时候直接赋值 aa = new XXX()。第二个,首先你要保证aa确实是一个YYY的对象,否则强制类型转换的时候肯定会出错。运行的时候确实会有一个检查类型转换的操作,这个操作确实也花费运行时间。但是,这两个操作所花的时间都不会产生效率问题。主要还是考虑设计问题,比如你这样的接口是否合适。
      

  4.   

    另外
    private int aa = 0;
    public int getAa(){
       return this.aa;
    }
    在类的外部是调用getAa,但在类的内部一般是调用this.aa 还是 this.getAa()?
    哪个较好
      

  5.   

    用static 性能是最好的
      

  6.   

    另外
    private int aa = 0;
    public int getAa(){
       return this.aa;
    }
    在类的外部是调用getAa,但在类的内部一般是调用this.aa 还是 this.getAa()?
    哪个较好