nameof operator allows you to get the name of a variable, type or member in string form without hard-coding it as a literal.
The operation is evaluated at compile-time, which means that you can rename a referenced identifier, using an IDE's rename feature, and the name string will update with it.
Stream represents a sequence of elements and supports different kind of operations to perform computations upon those elements. With Java 8,
Collection interface has two methods to generate a
Stream operations are either intermediate or terminal. Intermediate operations return a
Stream so multiple intermediate operations can be chained before the
Stream is closed. Terminal operations are either void or return a non-stream result.
Throwableand its subtypes can be sent up the stack with the
throwkeyword and caught with
The collections framework in
java.util provides a number of generic classes for sets of data with functionality that can't be provided by regular arrays.
Collections framework contains interfaces for
Collection<O>, with main sub-interfaces
Set<O>, and mapping collection
Map<K,V>. Collections are the root interface and are being implemented by many other collection frameworks.
Lambda expressions provide a clear and concise way of implementing a single-method interface using an expression. They allow you to reduce the amount of code you have to create and maintain. While similar to anonymous classes, they have no type information by themselves. Type inference needs to happen.
Method references implement functional interfaces using existing methods rather than expressions. They belong to the lambda family as well.
Generics are a facility of generic programming that extend Java's type system to allow a type or method to operate on objects of various types while providing compile-time type safety. In particular, the Java collections framework supports generics to specify the type of objects stored in a collection instance.
A layout defines the visual structure for a user interface, such as an activity or widget.
A layout is declared in XML, including screen elements that will appear in it. Code can be added to the application to modify the state of screen objects at runtime, including those declared in XML.
Gradle is a JVM-based build system that enables developers to write high-level scripts that can be used to automate the process of compilation and application production. It is a flexible plugin-based system, which allows you to automate various aspects of the build process; including compiling and signing a
.jar, downloading and managing external dependencies, injecting fields into the
AndroidManifest or utilising specific SDK versions.
Arrays allow for the storage and retrieval of an arbitrary quantity of values. They are analogous to vectors in mathematics. Arrays of arrays are analogous to matrices, and act as multidimensional arrays. Arrays can store any data of any type: primitives such as
int or reference types such as