初始化接口中的数据成员

在接口中定义的数据成员自动是 static 和 final 的。它们不能是“空 final”,但是可以被非常
量表达式初始化。例如:


//: c08:RandVals.java
// Initializing interface fields with
// non-constant initializers.
import java.util.*; 
 

public interface RandVals { 
  Random rand = new Random(); 
int randomInt = rand.nextInt(10); 
long randomLong = rand.nextLong() * 10; 
float randomFloat = rand.nextLong() * 10;
double randomDouble = rand.nextDouble() * 10; 
} ///:~


既然数据成员是 static 的,它们就可以在类第一次被加载时初始化,这发生在任何数据成员
首次被访问时。这里给出一个简单的测试:


//: c08:TestRandVals.java
import com.bruceeckel.simpletest.*; 


public class TestRandVals { 
private static Test monitor = new Test(); 
public static void main(String[] args) { 
    System.out.println(RandVals.randomInt);
    System.out.println(RandVals.randomLong);
    System.out.println(RandVals.randomFloat); 
    System.out.println(RandVals.randomDouble); 
    monitor.expect(new String[] { 
"%% -?\\d+",
"%% -?\\d+",
"%% -?\\d\\.\\d+E?-?\\d+",
"%% -?\\d\\.\\d+E?-?\\d+"
    });
  }
} ///:~


当然,这些数据成员不是接口的一部分,只是被存储在该接口的静态存储区域内。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值