为了账号安全,请及时绑定邮箱和手机立即绑定

Java的隐藏特征

Java的隐藏特征

噜噜哒 2019-07-11 12:42:58
Java的隐藏特征阅读后C#的隐藏特征我想知道,Java的一些隐藏特性是什么?
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞


双支撑初始化几个月前我第一次发现它的时候让我大吃一惊,以前从未听说过。

线迹通常不像存储每个线程状态的方式那样广为人知。

由于JDK1.5 Java有非常好的实现和健壮的并发工具,而不仅仅是锁,所以它们存在于java.util.并发一个特别有趣的例子是java.util.concurrent.原子子包,该包含实现比较和交换操作,并可以映射到这些操作的实际本机硬件支持的版本。


查看完整回答
反对 回复 2019-07-11
?
温温酱

TA贡献1752条经验 获得超4个赞

类型参数方差联合:

public class Baz<T extends Foo & Bar> {}

例如,如果您想接受一个既具有可比性又具有集合的参数:

public static <A, B extends Collection<A> & Comparable<B>>boolean foo(B b1, B b2, A a) {
   return (b1.compareTo(b2) == 0) || b1.contains(a) || b2.contains(a);}

如果两个给定集合相等,或者其中一个包含给定元素,则此人工方法返回true,否则为false。需要注意的一点是,您可以对参数b1和b2调用可比较方法和Collection方法。


查看完整回答
反对 回复 2019-07-11
?
精慕HU

TA贡献1845条经验 获得超8个赞

前几天我对实例初始化器感到惊讶。我删除了一些代码折叠的方法,最后创建了多个实例初始化器:

public class App {
    public App(String name) { System.out.println(name + "'s constructor called"); }

    static { System.out.println("static initializer called"); }

    { System.out.println("instance initializer called"); }

    static { System.out.println("static initializer2 called"); }

    { System.out.println("instance initializer2 called"); }

    public static void main( String[] args ) {
        new App("one");
        new App("two");
  }}

执行main方法将显示:

static initializer calledstatic initializer2 called
instance initializer called
instance initializer2 called
one's constructor called
instance initializer called
instance initializer2 called
two's constructor called

我想,如果您有多个构造函数,并且需要通用代码,这将是有用的。

它们还为初始化类提供了语法糖:

List<Integer> numbers = new ArrayList<Integer>(){{ add(1); add(2); }};Map<String,String> codes = new HashMap<String,String>(){{ 
  put("1","one"); 
  put("2","two");}};


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 349 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信