JDK1.8官方文档翻译
该专栏就是想将官方文档按照作者的理解翻译成中文,以期在不改变官方文档语义的基础上再次回顾JDK1.8的基本特性,期望能给更多的人以帮助。
grapeqin
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
7.7.3、下界通配符
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。下界通配符上界通配符 部分显示:上界通配符将未知类型限制为该类型的特定类型或子类型,并使用extends 关键字表示。类似地,下界通配符将未知类型限制为特定类型或该类型的超类型。下界通配符使用通配符(’?’)表示,后跟super 关键字,后跟它的下界:<? super A>。注意: 你可以指...原创 2019-10-12 17:05:00 · 287 阅读 · 0 评论 -
7.7.2、无界通配符
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。无界通配符无界通配符类型是使用通配符(?)指定的,例如List<?>。这称为未知类型列表。如下两种情况推荐使用无界通配符:如果你正在编写一个可以使用Object类中提供的功能来实现的方法当代码使用不依赖于类型参数泛型类中的方法时。例如:List.size或List.clear。事实上,经常使...原创 2019-10-12 16:18:46 · 510 阅读 · 0 评论 -
7.7.1、上界通配符
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。上界通配符你可以使用一个上界通配符来放宽对变量的限制。例如,假设你想要编写一个在List<Integer>、List<Double>和List<Number>上工作的方法;你可以通过使用一个上界通配符来实现。若要声明一个上界通配符,请使用通配符(’?’),后跟extend...原创 2019-10-12 15:57:15 · 333 阅读 · 0 评论 -
7.7、通配符
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。通配符在泛型代码中,通配符问号(?)表示未知的类型。通配符可用于多种情况:作为参数、字段或局部变量的类型;有时作为返回类型(尽管指定更具体地类型是更好的编程实践)。通配符从不用作泛型方法调用、泛型类实例创建或超类型的类型参数。下面几节将更详细地讨论通配符,包括上界通配符、下界通配符和通配符捕获。...原创 2019-10-12 15:02:38 · 186 阅读 · 0 评论 -
反射
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。教程:反射API反射的使用对于需要检查和修改运行在Java虚拟机中应用的运行时状态的程序,常常使用反射。这是一个相对高级的特性,应该只由对该语言的基本原理有较强掌握的开发人员使用。因此,反射是一种功能强大的技术,可以使应用程序执行通常情况下不可能执行的操作。可扩展特性应用可以使用自定义的外部类,通过其全...原创 2019-07-26 16:33:55 · 152 阅读 · 0 评论 -
反射-类
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。教程:反射-类类 该教程展示了多种获取类对象的方法,通过类对象我们可以检查类的属性,包括它的声明和内容。Java中的类型有两种,要么是引用类型,要么是原始类型。类,数组,枚举和接口都是引用类型。示例中的引用类型包括:字符串,所有原始类型的包装类(比如Double),接口(比如Serializable),枚...翻译 2019-08-06 12:25:06 · 567 阅读 · 0 评论 -
反射-成员
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。教程:反射之成员成员 该教程展示了如何使用反射API来获取类的字段、方法和构造器。提供了这些示例:设置和获取字段,方法调用,使用反射获取的构造器创建对象实例。字段字段有一个类型和一个值。java.lang.reflect.Field 类提供了能够访问一个对象的类型信息以及获取、设置值的方法。...翻译 2019-08-06 12:22:29 · 355 阅读 · 0 评论 -
反射-数组&枚举
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。教程:反射之数组&枚举数组确定数组类型通过 Class.isArray() 来确定一个数组类型。ArrayFind 示例演示了如何确定给定类字段是否是数组类型以及它的每一个组件类型。$ java reflection/ArrayFind java.nio.ByteBufferfina...翻译 2019-08-06 12:15:12 · 237 阅读 · 0 评论 -
Java SE中的安全特性
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。Java SE中的安全特性在本文中,您将了解内置的Java™安全特性如何保护您免受恶意程序的攻击。您将了解如何使用工具控制对资源的访问、生成和检查数字签名,以及创建和管理生成和检查签名所需的密钥。您还将看到如何将加密服务(如数字签名生成和检查)运用到程序中。Java开发工具包(JDK™)提供的安全特性适用于...翻译 2019-07-17 18:00:52 · 225 阅读 · 0 评论 -
创建策略文件
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。课程:创建策略文件该课程将向您展示如何通过创建的策略文件来控制资源的访问。步骤如下:设置策略文件以授予所需的权限策略文件是ASCII文本文件,可以通过文本编辑器或本节演示的图形化策略工具进行管理。策略工具可以节省输入,并消除策略文件的语法错误。该课使用策略工具创建名为examplepolicy的策略文...翻译 2019-07-17 17:59:24 · 874 阅读 · 0 评论 -
控制应用程序快速教程
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。教程:控制应用程序快速教程前置教程:创建策略文件该课程将演示如何使用安全管理器授予或拒绝对应用程序系统资源的访问。该课程也会演示如何进行资源访问,比如运行在安全管理器中的应用程序不允许读写一个文件,除非策略文件中有权限条目予以允许。该课有如下步骤:1. 应用自由度在应用程序运行时,不会自动安装安全...翻译 2019-07-18 15:59:10 · 435 阅读 · 0 评论 -
用于代码安全和文件交换的API和工具
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。课程:用于代码安全和文件交换的API和工具这篇课程解释了数字签名、证书和密钥库存在的必要性。该课程还比较了通过命令行工具和JDK Security API来生成数字签名。接下来的两节课将演示这种工具的用法,签名代码并授予它权限和文件交换。该课程包含以下几部分:代码和文档安全工具和API说明使用JDK...翻译 2019-07-19 17:09:52 · 287 阅读 · 0 评论 -
代码签名并授权
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。课程:代码签名并授权该课程展示了如何使用keytool、jarsigner、policy tool和jar工具将文件放入jar (Java ARchive)文件中,以便jarsigner工具后续完成签名。该课程分为两部分:首先,您将创建和部署一个应用程序;其次您将作为已签署应用程序的收件人。创建和部署应用...翻译 2019-07-22 15:59:02 · 1243 阅读 · 0 评论 -
文件交换
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。课程:文件交换如果您想通过电子方式将一封很重要的文档(比如合同)发送给某人,最好的方式是为该文档进行签名。这样接收方就能检查该文档确实来自于您并且在传输过程中没有被篡改。该课程将教您如何使用安全工具来交换重要的文档,比如合同。首先假设您是合同发送方,Stan Smith。该课程将向您演示Stan如何按步骤...翻译 2019-07-23 11:55:57 · 732 阅读 · 0 评论 -
生成和验证签名
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。课程:生成和验证签名该课程手把手教你使用Java Security API生成数字签名并验证数字签名的真实性。它是为那些希望将安全功能(包括密码学服务)集成到程序中的开发人员准备的。该课程演示了Java Security API在文档签名方面的使用。该课程展示一个拥有原始文档的人所执行的程序,该程序展示如何...翻译 2019-07-11 18:39:18 · 408 阅读 · 0 评论 -
生成数字签名
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。生成数字签名你将要创建的GenSig程序将使用JDK安全API为使用私钥的数据生成密钥和数字签名,并将公钥和签名导出到文件中。应用程序从命令行获取数据文件名。以下步骤演示了如何创建GenSig示例程序1. 准备初始程序结构创建一个名为GenSig.java的文本文件。输入初始程序结构(import语句、...翻译 2019-07-12 13:09:15 · 2432 阅读 · 0 评论 -
验证数字签名
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。验证数字签名如果你拥有一个已经生成好的数字签名,你就可以验证该数字签名的真实性。要做到这一点,你需要数据数字签名用于对数据签名的私钥对应的公钥在该例中你将通过VerSign程序来验证通过GenSign程序生成的数字签名。为验证数字签名的真实性需要遵循一些步骤。VerSig导入一个公钥和一个指定数...翻译 2019-07-15 11:54:10 · 1164 阅读 · 0 评论 -
不足和可替代方案
不足和可替代方案本课中的GenSig和VerSig程序演示了如何使用JDK Security API为数据生成数字签名,并验证签名的真实性。然而,程序中描述的实际场景是,发送者使用JDK Security API生成一个新的公钥/私钥对,发送方公钥编码字节存储在一个文件,接收者读取到的密钥字节不一定是真实的,这里有一个潜在的主要缺陷。在大部分情况下,不需要生成密钥;编码密钥要么存在于文件中,要...翻译 2019-07-15 17:22:37 · 369 阅读 · 0 评论 -
6.1、数字
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。数字这部分先讨论 java.lang 包中的 String 类和它的子类,以及什么情况下使用数字类而不是数字的原始类型。其次,通过描述 PrintStream 和 DecimalFormat 类,了解它们提供的针对数字的格式化输出。最后,也讨论了 java.lang 包中的 Math 类。它包含语言内置运...原创 2019-09-29 09:46:45 · 149 阅读 · 0 评论 -
5.2.8、抽象方法和抽象类
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。5.2.8、抽象方法和抽象类抽象类是指 通过 abstract 描述的类 — 它可以有或者没有抽象方法。抽象类不能实例化,但可以子类化。抽象方法是指只有声明没有实现的方法(指没有括号,分号结尾):abstract void moveTo(double deltaX, double deltaY);如果...原创 2019-09-27 14:48:54 · 178 阅读 · 0 评论 -
5.2.7、Final类和方法
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。5.2.7、Final类和方法可以将类的方法声明为 final 。用 final 修饰方法表示该方法不会被子类重写。Object 类就这样做了 — 声明了一些 final 修饰的方法。将方法声明为 final 需要满足1、它的实现不能改变,2、它的实现对维护对象的一致性状态至关重要。比如:ChessAlgo...原创 2019-09-27 10:19:32 · 124 阅读 · 0 评论 -
5.2.6、作为父类的Object
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。5.2.6、作为父类的Objectjava.lang 包中的 Object 类,位于类层次结构中的最顶层。每个类都直接或间接是Object类的子类。你编写和使用的每个类都会继承Object的实例方法。你不需要使用它的每一个方法,一旦你选择这样做,你就不得不在子类中重写指定的方法。稍后将讨论的从Object 继...原创 2019-09-26 19:01:51 · 163 阅读 · 0 评论 -
5.2.5、super关键字的使用
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。5.2.5、super关键字的使用访问父类成员如果重写了父类的方法,通过super关键字可以调用被重写的方法。也可以使用super引用隐藏字段(尽管隐藏字段不推荐使用)。考虑这个类 SuperClass :public class Superclass { public void printMe...原创 2019-09-26 16:44:10 · 190 阅读 · 0 评论 -
5.2.4、字段隐藏
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。5.2.4、字段隐藏子类中有与父类同名的字段,它将隐藏父类同名的该字段,即使它们的类型不同。在子类中,不能通过字段名来引用父类中的该字段。但可以使用super来访问,这将在下一节中讨论。一般来讲,不推荐使用字段隐藏,它对阅读代码造成很大的困难。...原创 2019-09-26 15:51:59 · 285 阅读 · 0 评论 -
5.2.3、多态性
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。5.2.3、多态性在生物学中对多态的定义是:任何一个物种或群体都会有多种形式和阶段。这个原理也可以运用到面向对象编程语言中,比如Java。子类定义它特有的行为同时共享父类的公共能力。通过对 Bicycle 类做一些小改动来演示多态性。比如:增加 printDescription方法打印实例方法中的所有数据。...原创 2019-09-26 11:47:15 · 120 阅读 · 0 评论 -
5.2.2、方法重写与隐藏
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。5.2.2、方法重写与隐藏实例方法子类中与父类方法签名和返回值类型相同的方法将会重写父类的方法。方法重写的能力允许类去扩展在行为上接近的父类,并根据需要修改其行为。重写的方法与被重写方法有相同的方法名,相同数量和类型的参数,相同的返回值类型。重写方法可以返回被重写方法返回值类型的子类型。该子类型称作协变返...原创 2019-09-26 11:02:26 · 239 阅读 · 0 评论 -
5.2.1、状态、实现和类型的多重继承
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。5.2.1、状态、实现和类型的多重继承类和接口之间最大的区别就是类可以声明字段,但接口却不能声明字段。而且,你可以通过实例化类来创建对象,但接口却不能。对象通过在类中定义的字段来存储它的状态。Java编程语言不支持多重继承的一个原因就是避免状态的多重继承带来的问题。比如:假设你能够扩展多个类来创建一个子类。当...原创 2019-09-25 17:23:02 · 149 阅读 · 0 评论 -
5.1、接口
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。接口在软件工程中,有很多情况下,对于不同的程序员团队来说,同意一份阐明他们的软件如何交互的“契约”是很重要的。 每个程序员团队在编写代码的同时没有了解其他程序员团队所编写的代码。一般来说,接口就是这种契约。例如,想象一个未来社会,计算机控制的机器人汽车在没有人类操作员的情况下在城市街道上运送乘客。汽车制造商...原创 2019-09-09 11:26:49 · 185 阅读 · 0 评论 -
5、接口与继承
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。接口与继承接口在前文的代码示例中有实现一个接口。这里你将学到更多关于什么是接口?为什么要用接口?以及如何写一个接口。继承本节描述...原创 2019-09-09 11:30:19 · 100 阅读 · 0 评论 -
5.1.1、接口定义
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。接口定义一个接口声明包括:修饰符、interface关键字、接口名、逗号分隔的父接口列表(如果有多个的话)和接口内容体。例如:public interface GroupedInterface extends Interface1, Interface2, Interface3 { // cons...原创 2019-09-09 11:49:33 · 171 阅读 · 0 评论 -
5.1.2、接口实现
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。接口实现为声明一个实现接口的类,需要在类声明中包含 implements 子句。类可以实现多个接口,因此,在implements 后面用逗号分隔的接口就是类要实现的接口列表。一般来说,implements子句在extends子句后面,如果extends子句的话。接口示例:Relatable考虑下定义了如何...原创 2019-09-09 14:14:05 · 151 阅读 · 0 评论 -
5.1.3、使用接口作为类型
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。使用接口作为类型当定义了一个接口,你就定义了一个新的引用类型。你可以在任何可以使用其他数据类型名称的地方使用接口名称。如果你定义一个接口类型的引用变量,赋值给该变量的对象必须是实现该接口的类实例。举例,下面是查找两个对象中最大的一个对象的方法,对任意实现了Relatable接口类的对象都适用:public...原创 2019-09-09 16:04:41 · 546 阅读 · 0 评论 -
5.1.4、接口进化
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。接口进化假设你开发了一个叫做DoIt的接口:public interface DoIt { void doSomething(int i, double x); int doSomethingElse(String s);}假设过了一段时间,你想在DoIt中添加一个新方法,接口将变成pu...原创 2019-09-09 16:24:14 · 129 阅读 · 0 评论 -
5.1.5、默认方法
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。默认方法接口 部分描述了一个用电脑控制汽车的制造商的故事,制造商会发布一些行业标准接口,这些接口描述可以调用哪些方法来操作汽车。如果这些制造商为汽车增加新的能力,比如飞行,那会怎么样呢?制造商们需要指定新的方法,这样其他公司(如导航仪制造商)才能够将其软件应用于飞行汽车。汽车制造商们在哪里去发布这些新的适用于...原创 2019-09-12 16:34:00 · 152 阅读 · 0 评论 -
5.2、继承
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。5.2、继承在前面的教程中,我们多次提到过 继承 。在Java编程语言中,一个类可以从其他的类派生出来,从而继承这些类的字段和方法。继承 的思想很简单但是非常强大:当你想创建一个新类,但已知有一个类存在一部分你想要的代码,那么你就可以从这个已经存在的类中派生出新的类。这样做,你就可以重用这个类的字段和方法,...原创 2019-09-23 14:49:50 · 146 阅读 · 0 评论 -
6.1.1、Numbers 类
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。Numbers类当使用数字时,大部分情况下会使用基本类型,比如:int i = 500;float gpa = 3.65f;byte mask = 0xff;然而,在有些情况下建议使用对象来代替基本类型,Java平台为每个基本类型都提供了与之对应的包装类。...原创 2019-09-29 10:47:00 · 201 阅读 · 0 评论 -
6.1.2、格式化数字输出
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。格式化数字输出之前我们使用 print 和 println 方法将字符串输出到标准输出。由于所有的数值都可以转换成 String 类型,你将看到这些方法可以打印数值和字符串的任意组合。在Java语言中,提供了额外的方法,能够让你在包含数值的字符串输出中有更多的控制权。printf和格式化方法java.io...原创 2019-09-29 14:11:12 · 231 阅读 · 0 评论 -
7.6、类型推导
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。类型推导类型推导是Java编译器提供的用来查看方法调用与相应方法声明以确定参数(或多个参数)类型的一种能力。推理算法确定参数的类型,如果可用,还确定返回结果的类型。最后,推理算法尝试找到与所有参数一起工作最合适的类型。为了说明这最后一点,在下面的例子中,推论确定传递给pick方法的第二个参数是Seriali...原创 2019-10-11 17:02:52 · 434 阅读 · 0 评论 -
7.5、泛型、继承和子类型
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。泛型、继承和子类型正如你所知的,只要类型是兼容的,就可以将一种类型的对象分配给另一种类型的对象。例如,可以将一个Integer赋值给一个Object,因为Object是Integer的超类型之一:Object someObject = new Object();Integer someInteger = ...原创 2019-10-10 16:42:27 · 183 阅读 · 0 评论 -
7.4.1、泛型方法和有界类型参数
这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。泛型方法和有界类型参数有界类型参数是实现泛型算法的关键。考虑以下方法,该方法计算数组T[]中大于指定元素elem的元素数量。public static <T> int countGreaterThan(T[] anArray, T elem) { int count = 0; f...原创 2019-10-09 09:54:38 · 201 阅读 · 0 评论
分享