<commit_before>- Mindenek előtt van erre egy külön action (Shift+Cmd+A)

- Alapvetően jó szokott lenni az eredemény, de érdemes kisebb egységekben haladni
- Nem mindig az ízlésed szerint fog dolgozni

- Ami nekem nem tetszik, hogy az interfacebe rak fieldeket (get valami, set valamiból fieldek)
- Van hogy hiábra fut, kommenteket nem vesz át
- A bitműveleteket nem kezeli mindig jól (nézni fogod, hogy mi az shl - mondjuk shift left)
- Array-ek konvertálása nem mindig az igazi, pl ByteArray, ami spéci Kotlinos cucc

- Jó az eszköz, de figyelni rá, minimális kotlin ismeret nem árt

- Mindezekhez jó lenne néhány példa
<commit_msg>Docs update: Convert from Java<commit_after># Kódátalakítás Java-ról Kotlin-ra

## Az alap probléma

Egy új nyelv esetében, nyilvánvaló nehézséget okoz, ha a régi nyelven írt dolgokat az újra át kell írni. Itt jön jól minden tooling segítség, és ebben a JetBrains emberei zseniálisak.

Mind az IntelliJ IDEA-ba, mind az Android Studioban beépítve megtalálható egy elég frankó átalakító eszköz. Két irányból is elérhető:
- Mint action is elérhető (Shift+Cmd+A), majd *Convert Java File to Kotlin File*
- Illetve a főmenüben, *Code / Convert Java File to Kotlin File* parancs

Ennyi az egész. 

Példaképp alakítsunk át egy darabka Java kódot Koltinra.

Így néz ki Java-ban:
```java
public class JavaCode {
  public String toJSON(Collection<Integer> collection) {
    StringBuilder sb = new StringBuilder();
    sb.append("[");
    Iterator<Integer> iterator = collection.iterator();
    while (iterator.hasNext()) {
      Integer element = iterator.next();
      sb.append(element);
      if (iterator.hasNext()) {
          sb.append(", ");
      }
    }
    sb.append("]");
    return sb.toString();
  }
}
```

Így pedig Koltinban:
```kotlin
class JavaCode {
  fun toJSON(collection:Collection<Int>):String {
    val sb = StringBuilder()
    sb.append("[")
    val iterator = collection.iterator()
    while (iterator.hasNext())
    {
      val element = iterator.next()
      sb.append(element)
      if (iterator.hasNext())
      {
        sb.append(", ")
      }
    }
    sb.append("]")
    return sb.toString()
  }
}
```

Itt egyelőre minimális a különbség, de majd meglátjátok, össze fog az eredmény összemenni még sokkal-sokkal jobban is.

## Tapasztalatok

Jó eszközről van szó, általánosságban jó szokott lenni az eredemény, de nem mindig fog az ízlésed szerint dolgozni. Épp ezért elő fog olyan fordulni, hogy bele kell nyúlnod kézzel. Ilyenkor persze nem árt némi Kotlin tudás. 

Azt szoktuk javasolni, hogy érdemes kisebb egységekben (funkció, legfeljebb osztály) haladni, így sokkal könnyebb lesz később átlátni, hogy mi történt, és korrigálni, ha valami nem az igazi.

## Időnként azért képes csúnya dolgokat csinálni

- Ami nekem nem tetszik, hogy az interfacebe rak fieldeket (get valami, set valamiból fieldek) [TODO] keressetek példát
- Van hogy hiábra fut, kommenteket nem vesz át [TODO] keressetek példát
- A bitműveleteket nem kezeli mindig jól (nézni fogod, hogy mi az shl - mondjuk shift left) [TODO] keressetek példát
- Array-ek konvertálása nem mindig az igazi, pl ByteArray, ami spéci Kotlinos cucc [TODO] keressetek példát

{'fraction_non_alphanumeric': 0.07917059377945335, 'fraction_numerical': 0.0, 'mean_word_length': 3.8834355828220857, 'pattern_counts': {'":': 0, '<': 6, '<?xml version=': 0, '>': 6, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2112314', 'n_tokens_mistral': 1249, 'n_tokens_neox': 1273, 'n_words': 393}