Skip to content

Instantly share code, notes, and snippets.

View fo2rist's full-sized avatar

Dmitry Sitnikov fo2rist

View GitHub Profile
@fo2rist
fo2rist / J2K_6_After.kt
Created March 23, 2020 22:22
Java To Kotlin Conversion. Step 6. Polish After
class NonLazyDemoAdapter internal constructor(
fm: FragmentManager
) : FragmentStatePagerAdapter(fm) {
internal data class FragmentBundle(
@SerializedName("id") // caller side now can be refactored to use property, not JvmField
var id: Int,
@SerializedName("name")
var name: String
) : Serializable
@fo2rist
fo2rist / J2K_6_Before.kt
Created March 23, 2020 22:22
Java To Kotlin Conversion. Step 6. Polish Before
class NonLazyDemoAdapter internal constructor(
fm: FragmentManager
) : FragmentStatePagerAdapter(fm) {
internal class FragmentBundle(
@JvmField
@SerializedName("id")
var id: Int,
@JvmField
@fo2rist
fo2rist / J2K_5_After.kt
Created March 23, 2020 22:19
Java To Kotlin Conversion. Step 5. Nullability After
override fun getItem(position: Int): Fragment {
return cachedFragments[position]
}
@fo2rist
fo2rist / J2K_5_Before.kt
Last active March 23, 2020 22:19
Java To Kotlin Conversion. Step 5. Nullability Before
override fun getItem(position: Int): Fragment {
return cachedFragments[position]!!
}
@fo2rist
fo2rist / J2K_4_After.kt
Last active March 23, 2020 22:17
Java To Kotlin Conversion. Step 4. Interop After
class NonLazyDemoAdapter internal constructor(fm: FragmentManager) : FragmentStatePagerAdapter(fm) {
internal class FragmentBundle(
@JvmField
@SerializedName("id") // if this field was used directly before we need JvmField annotation
var id: Int,
@JvmField
@SerializedName("name") // if this field was used directly before we need JvmField annotation
var name: String
@fo2rist
fo2rist / J2K_4_Before.kt
Last active March 23, 2020 22:17
Java To Kotlin Conversion. Step 4. Interop Before
class NonLazyDemoAdapter internal constructor(fm: FragmentManager) : FragmentStatePagerAdapter(fm) {
internal class FragmentBundle(
@field:SerializedName("id") var id: Int,
@field:SerializedName("name") var name: String
) : Serializable
companion object {
@fo2rist
fo2rist / J2K_3_After.kt
Created March 23, 2020 22:02
Java To Kotlin Conversion. Step 3. Conversion After
class NonLazyDemoAdapter internal constructor(fm: FragmentManager) : FragmentStatePagerAdapter(fm) {
private val pages = arrayOf(SomePage.FIRST, SomePage.SECOND)
override fun getItem(position: Int): Fragment {
return cachedFragments[position]!!
}
}
@fo2rist
fo2rist / J2K_3_Before.java
Created March 23, 2020 22:01
Java To Kotlin Conversion. Step 3. Conversion Before
public class NonLazyDemoAdapter extends FragmentStatePagerAdapter {
@NonNull // don't forget to mark array content non-nullable
private SomePage[] pages = new SomePage[]{FIRST, SECOND};
@NonNull
private PageFragment[] cachedFragments = new PageFragment[pages.length];
NonLazyDemoAdapter(@NonNull FragmentManager fm) {
...
}
@fo2rist
fo2rist / J2K_1_After.java
Created March 23, 2020 21:56
Java To Kotlin Conversion. Step 1. Annotations After
public class NonLazyDemoAdapter extends FragmentStatePagerAdapter {
@NonNull
private SomePage[] pages = new SomePage[]{FIRST, SECOND};
@NonNull
private PageFragment[] cachedFragments = new PageFragment[pages.length];
NonLazyDemoAdapter(@NonNull FragmentManager fm) {
...
}
@fo2rist
fo2rist / J2K_1_Before.java
Last active March 23, 2020 21:56
Java To Kotlin Conversion. Step 1. Annotations Before
public class NonLazyDemoAdapter extends FragmentStatePagerAdapter {
private SomePage[] pages = new SomePage[]{FIRST, SECOND};
private PageFragment[] cachedFragments = new PageFragment[pages.length];
NonLazyDemoAdapter(FragmentManager fm) {
...
}