返回顶部
首页 > 资讯 > 精选 >Java双括弧使用技巧是什么
  • 343
分享到

Java双括弧使用技巧是什么

2023-06-18 00:06:00 343人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关Java双括弧使用技巧是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java双括弧技巧回顾初看 cgaolei 翻译的 Java技巧之双括弧初始化 一文,走马观花,只知用

这篇文章将为大家详细讲解有关Java双括弧使用技巧是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Java双括弧技巧回顾

初看 cgaolei 翻译的 Java技巧之双括弧初始化 一文,走马观花,只知用法,未细看后面的解释。蔚为惊艳,心里想 Java 竟然有这么神奇的语法而一直未得知。因为在初始化集合时确实方便不少。原来做某些测试要初始化集合时会用到 commons-lang 包和 jdk 的 Arrays 工具类,现在知道可以这么用了:

Map map = new HashMap() {{    put("Name", "Unmi");    put("QQ", "1125535");  }};   List stooges = new ArrayList() {{    add("Larry");    add("Moe");    add("Curly");  }};

看起来都是在一条语句里完成,而不需要分步骤写成:

Map map = new HashMap();  map.put("Name","Unmi");  map.put("QQ","1125535");

一不小心没好好理解的人可能以为它是什么特别的语法,关键是大括号连一块了,原作者也是在故作姿态,美其名曰:双括弧语法(double-brace syntax)。真是乱花渐欲迷人眼,其实就是匿名类加初始块。该文有解释:***层括弧 实际是定义了一个内部匿名类 (Anonymous Inner Class),第二层括弧 实际上是一个实例初始化块 (instance initializer block),这个块在内部匿名类构造时被执行。

那怎么去更好理解它呢?如果我们写成如下的方式应该会更好理解吧,提个技巧,在 Eclipse 中对***段代码按下 Ctrl + Shift + F 就如下了:

Map map = new HashMap() {   {    put("Name", "Unmi");    put("QQ", "1125535");   }  };

其实就是匿名类啊,会创建出一个 HashMap 的子类来,匿名类中一个 {} 括起来的初始化块,里面自然可放置初始化代码。{} 块中的代码编译后会放到 <init>(),也就是构造方法中去,所以可用来初始化实例。如果是写在 TestDoubleBrace 类中,编译后你会看到会生成 TestDoubleBrace$1.class 文件,反编译该文件内容是:

final class com.unmi.TestDoubleBrace$1 extends java.util.HashMap{ //创建了一个 HashMap 的子类 TestDoubleBracke$1  com.unmi.TestDoubleBrace$1();    Code:     0:   aload_0     1:   invokespecial   #8; //Method java/util/HashMap."<init>":()V   //{} 中的代码放到了构造方法中去了     4:   aload_0     5:   ldc     #10; //String Name     7:   ldc     #12; //String Unmi     9:   invokevirtual   #14; //Method put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;     12:  pop     13:  aload_0     14:  ldc     #18; //String QQ     16:  ldc     #20; //String 1125535     18:  invokevirtual   #14; //Method put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;     21:  pop     22:  return  }

所以说白了,什么双括弧语法啊,就是代码写得不规范,才使得那么的令人费解。如果还不能理解,再列两个惯用代码来:

JFrame frame = new JFrame();  frame.addMouseListener(new MouseAdapter() {   public void mouseClicked(MouseEvent e) {    // do womething here.   }  });   Thread thread = new Thread() {{ // 也学着样把大括号也连一块写了    this.setName("作业处理线程");   }// 如果不重新定义 run() 方法,那么后面那个大括号也能与这个并一块    public void run() {    // do something here.   }  };  thread.start();

应该没问题了吧,上面是事件监听器和多线程常用的写法,如果他不把大括号连在一起,而是规范的写代码,相信您一开始也不会对所谓的 Double Brace Syntax 有太多的困惑。要说这种初始化方法运用到集合中还挺方便的,只是无端的多了些匿名类。

刚开始我看到这种Java双括弧写法也是把它奉若圣经,对它只一知半解,昨天在用 XStream 把一个对象生成 XML 文件时,其中有一个 List 属性,我就借用了这种双括符法来初始化元素,结果生成的 XML 文件走了样,原因是 XStream 的 Converter 能处理 ArrayList,但无法很好的处理生成的 ArrayList 的匿名子类。因此才回头认真的重新审视了一番这个所谓的双括符初始化语法。

关于“Java双括弧使用技巧是什么”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Java双括弧使用技巧是什么

本文链接: https://lsjlt.com/news/294793.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java双括弧使用技巧是什么
    这篇文章将为大家详细讲解有关Java双括弧使用技巧是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java双括弧技巧回顾初看 cgaolei 翻译的 Java技巧之双括弧初始化 一文,走马观花,只知用...
    99+
    2023-06-18
  • ADO.NET使用技巧是什么
    本篇内容介绍了“ADO.NET使用技巧是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!打开连接后,ADO.NET技巧使本地OLE DB向...
    99+
    2023-06-17
  • ADO.NET程序使用技巧是什么
    本篇内容介绍了“ADO.NET程序使用技巧是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!对于ADO.NET程序提供一个类的集合,专门设...
    99+
    2023-06-17
  • Java中双大括号初始化怎么使用
    这篇文章主要讲解了“Java中双大括号初始化怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中双大括号初始化怎么使用”吧!偶然机会看到一种对象初始的方式:  ...
    99+
    2023-07-02
  • windows服务器使用技巧是什么
    Windows服务器使用技巧有很多,以下是一些常用的技巧: 远程桌面连接:通过远程桌面连接可以远程管理服务器,进行系统设置、文件...
    99+
    2024-05-08
    windows 服务器
  • shell的双括号怎么使用
    这篇文章主要介绍“shell的双括号怎么使用”,在日常操作中,相信很多人在shell的双括号怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”shell的双括号怎么使用”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-28
  • css常用技巧是什么
    小编给大家分享一下css常用技巧是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、三角形列表项目符号ul  {&...
    99+
    2024-04-02
  • 关于Java双大括号{{}}的具体使用
    初看 cgaolei 翻译的 Java技巧之双括弧初始化 一文,走马观花,只知用法,未细看后面的解释。蔚为惊艳,心里想 Java 竟然有这么神奇的语法而一直未得知。因为在初始化集合时...
    99+
    2024-04-02
  • 下一代的ADO.NET使用技巧是什么
    这篇文章主要讲解了“下一代的ADO.NET使用技巧是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“下一代的ADO.NET使用技巧是什么”吧!比如下面的例子:这是一个普通的关系型数据库。下...
    99+
    2023-06-17
  • 云服务器使用的技巧是什么
    云服务器是一种虚拟化技术,可以灵活地扩展和管理计算资源。以下是一些使用云服务器的技巧: 自动扩展:根据实际需求自动扩展计算资源,...
    99+
    2024-04-24
    云服务器
  • Rust语言技巧的使用方法是什么
    这篇文章主要介绍“Rust语言技巧的使用方法是什么”,在日常操作中,相信很多人在Rust语言技巧的使用方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Rust语言技巧的使用方法是什么”的疑惑有所帮助!...
    99+
    2023-06-16
  • Zoho mail 多样化的使用技巧是什么
    这期内容当中小编将会给大家带来有关Zoho mail 多样化的使用技巧是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  Zoho mail 拥有很多方便又高效的使用技巧...
    99+
    2023-06-05
  • Golang的锁机制与使用技巧是什么
    本篇内容主要讲解“Golang的锁机制与使用技巧是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang的锁机制与使用技巧是什么”吧!1. sync.Mutex详解sync.Mutex是...
    99+
    2023-06-30
  • Ado Connection技巧是什么
    这篇文章主要讲解了“Ado Connection技巧是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Ado Connection技巧是什么”吧!我们首先知道  activex ...
    99+
    2023-06-17
  • Linux生产环境上Sed使用技巧是什么
    今天小编给大家分享一下Linux生产环境上Sed使用技巧是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一个简单的入门一...
    99+
    2023-06-15
  • ADO.NET类和接口相关使用技巧是什么
    本篇内容主要讲解“ADO.NET类和接口相关使用技巧是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ADO.NET类和接口相关使用技巧是什么”吧!为每种类型的数据库服务器专门定制数据库访问类...
    99+
    2023-06-17
  • VB.NET比较运算符的使用技巧是什么
    VB.NET比较运算符的使用技巧是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。VB.NET编程语言中有很多种运算符需要我们去熟练的掌握,才能方便于实际的开发,提高编程效率...
    99+
    2023-06-17
  • JavaScript开发技巧是什么
    本篇内容介绍了“JavaScript开发技巧是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 有条...
    99+
    2024-04-02
  • Python闭包技巧是什么
    这篇文章主要讲解了“Python闭包技巧是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python闭包技巧是什么”吧!1.闭包:用函数代替类有时我们会定义只有一个方法(除了__init...
    99+
    2023-06-21
  • ADO.NET编程技巧是什么
    本篇内容主要讲解“ADO.NET编程技巧是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ADO.NET编程技巧是什么”吧!让我先提一个问题好吗我的软件环境是:windows xp,offic...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作