用于处理Java中void方法返回的虚拟变量?

当我需要在当前对象的方法之外运行表达式(例如外部方法)时,我为该对象类声明一个字段变量,并将该表达式的返回值赋给该变量.如下,

class{
variabletype a=expression();
  public int method(){
  -----}
}

这里在开始任何类的方法之前计算expression().除非返回类型的expression()为void,否则它完美地工作.即使表达式()没有返回任何内容,我正在寻找的方法也是如此.更具体地说,我需要一种虚拟变量来执行与上面显示代码的第2行相同的操作,即使expression()没有返回任何内容.注意:我无权访问该类的构造函数.

解决方法

您可以使用实例初始化程序块:

class YourClass
{

    {
        expression ();
    }

    ...
}

这将在类的每个构造函数的主体之前执行expression(). expression()是返回某个东西,还是具有void返回类型并不重要.

您不必引入任何虚拟实例变量.

顺便说一下,你的Here表达式()是在类的任何方法(构造函数除外)开始之前计算的.假设不准确.实例变量在构造函数体执行之前初始化(但在超类构造函数之后).因此,expression()在类的构造函数的主体之前执行.

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...