售 价:¥
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
Title Page
Copyrights
Android Development with Kotlin
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Why subscribe?
Customer Feedback
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
Beginning Your Kotlin Adventure
Say hello to Kotlin
Awesome Kotlin examples
Dealing with Kotlin code
Kotlin Playground
Android Studio
Configuring Kotlin for the project
Using Kotlin in a new Android project
Java to Kotlin converter (J2K)
Alternative ways to run Kotlin code
Kotlin under the hood
The Kotlin standard library
More reasons to use Kotlin
Summary
Laying a Foundation
Variables
Type inference
Strict null safety
Safe call
Elvis operator
Not null assertion
Let
Nullability and Java
Casts
Safe/unsafe cast operator
Smart casts
Type smart casts
Non-nullable smart cast
Primitive data types
Numbers
Char
Arrays
The Boolean type
Composite data types
Strings
String templates
Ranges
Collections
Statements versus expressions
Control flow
The if statement
The when expression
Loops
The for loop
The while loop
Other iterations
Break and continue
Exceptions
The try... catch block
Compile-time constants
Delegates
Summary
Playing with Functions
Basic function declaration and usages
Parameters
Returning functions
Vararg parameter
Single-expression functions
Tail-recursive functions
Different ways of calling a function
Default arguments values
Named arguments syntax
Top-level functions
Top-level functions under the hood
Local functions
Nothing return type
Summary
Classes and Objects
Classes
Class declaration
Properties
Read-write versus read-only property
Property access syntax between Kotlin and Java
Increment and decrement operators
Custom getters/setters
The getter versus property default value
Late-initialized properties
Annotating properties
Inline properties
Constructors
Property versus constructor parameter
Constructor with default arguments
Patterns
Inheritance
The JvmOverloads annotation
Interfaces
Data classes
The equals and hashCode method
The toString method
The copy method
Destructive declarations
Operator overloading
Object declaration
Object expression
Companion objects
Companion object instantiation
Enum classes
Infix calls for named methods
Visibility modifiers
Internal modifier and Java bytecode
Sealed classes
Nested classes
Import aliases
Summary
Functions as First-Class Citizens
Function type
What is function type under the hood?
Anonymous functions
Lambda expressions
Implicit name of a single parameter
Higher-order functions
Providing operations to functions
Observer (Listener) pattern
Callback after a threaded operation
Combination of named arguments and lambda expressions
Last lambda in argument convention
Named code surrounding
Processing data structures using LINQ style
Java SAM support in Kotlin
Named Kotlin function types
Named parameters in function type
Type alias
Underscore for unused variables
Destructuring in lambda expressions
Inline functions
The noinline modifier
Non-local returns
Labeled return in lambda expressions
Crossinline modifier
Inline properties
Function References
Summary
Generics Are Your Friends
Generics
The need for generics
Type parameters versus type arguments
Generic constraints
Nullability
Variance
Variance modifiers
Use-site variance versus declaration-site variance
Collection variance
Variance producer/consumer limitation
Invariant constructor
Type erasure
Reified type parameters
The startActivity method
Star-projections
Type parameter naming conventions
Summary
Extension Functions and Properties
Extension functions
Extension functions under the hood
No method overriding
Access to receiver elements
Extensions are resolved statically
Companion object extensions
Operator overloading using extension functions
Where should top-level extension functions be used?
Extension properties
Where should extension properties be used?
Member extension functions and properties
Type of receivers
Member extension functions and properties under the hood
Generic extension functions
Collection processing
Kotlin collection type hierarchy
The map, filter, flatMap functions
The forEach and onEach functions
The withIndex and indexed variants
The sum, count, min, max, and sorted functions
Other stream processing functions
Examples of stream collection processing
Sequence
Function literals with receiver
Kotlin standard library functions
The let function
Using the apply function for initialization
The also function
The run and with function
The to function
Domain-specific language
Anko
Summary
Delegates
Class delegation
Delegation pattern
Decorator pattern
Property delegation
What are delegated properties?
Predefined delegates
The lazy function
The notNull function
The observable delegate
The vetoable delegate
Property delegation to Map type
Custom delegates
View binging
Preference binding
Providing a delegate
Summary
Making Your Marvel Gallery Application
Marvel Gallery
How to use this chapter
Make an empty project
Character gallery
View implementation
Network definition
Business logic implementation
Putting it all together
Character search
Character profile display
Summary
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜