Je suis en train de griffonner comment résoudre l'erreur que j'ai eue lors de la conversion de Java à Kotlin avec la fonctionnalité Inttellij. Je peux l'organiser plus tard. Puisque j'étais un débutant de Kotlin et que je venais d'effacer l'erreur pour le moment, il semble y avoir un endroit où il est mal écrit par programmation. Veuillez me faire savoir s'il existe une meilleure solution.
Pour le moment, j'ai attaché tout <*>
before
var controller: Controller
after
var controller: Controller<*>
<\ > Semble être une abréviation pour \
before
var controller: Controller
after
var controller: Controller<Data>
Cette fois, c'était juste du gaspillage, alors j'ai effacé un côté et l'ai résolu. Il y avait une méthode pour créer un nouveau type et le résoudre de force, mais linguistiquement, il s'agit peut-être de créer un générique circulaire.
Il a disparu par conversion. Dans Kotlin, écrivez pour accéder au champ tel quel. La visibilité semble être en lecture seule en déclarant un ensemble privé.
before
game.getFinishStatus()
after
game.finishStatus
before
game.setFinishStatus(FinishStatus(true))
after
game.finishStatus=FinishStatus(true)
Les méthodes de remplacement doivent avoir le modificateur de remplacement. Il est généralement attaché automatiquement, mais certains ne l'ont pas fait. Pouvez-vous ajouter automatiquement des substitutions de méthode pour des objets tels que toString? Certains d'entre eux n'étaient même pas attachés à leur propre classe. Je ne suis pas sûr.
before
fun toString(): String {
return text
}
after
override fun toString(): String {
return text
}
La liste par défaut de Kotlin ne vous permet pas d'ajouter ou de supprimer des éléments. Si vous le déclarez comme List en Java, il sera converti dans la liste par défaut, donc add ne peut pas être utilisé. Réécrivez la déclaration dans MutableList.
before
private var commandList: List<IN>? = null
commandList!!.add(command)//Erreur
after
private var commandList: MutableList<IN>? = null
commandList!!.add(command)//Pas d'erreur
Celui dont l'argument est index est removeAt
before
shapeList.remove(0)
after
shapeList.removeAt(0)
Il a disparu pour une raison quelconque. Il semble qu'il n'y ait pas de problème si vous supprimez la distribution si vous effectuez une distribution sécurisée, mais il y a eu une erreur. C'était peut-être un casting utilisant Generics.
before
cd//à l'origine(IN)cd //IN est générique
after
cd as IN
Ne peut pas être attribué car le type est différent entre l'argument de longueur variable et le tableau normalement déclaré. Créez un nouveau tableau à partir d'arguments de longueur variable et assignez.
before
class ControllerGroup(vararg controllers: Controller<*>) {
private val controllers: Array<Controller<*>>
init {
this.controllers = controllers
}
}
after
class ControllerGroup(vararg controllers: Controller<*>) {
private val controllers: Array<Controller<*>>
init {
this.controllers = arrayOf(*controllers)
}
}
Les choses liées aux vérifications nulles sont généralement effectuées automatiquement, mais il semble que les arguments de méthode ne soient pas terminés?
before
game.addShape(shape)//Shape?C'est pourquoi il est dit non
after
game.addShape(shape!!)
Lorsque vous souhaitez supprimer de la valeur Null, cochez un tableau qui est d'abord rempli avec Null, puis rempli de valeurs (ce qui entraîne la non-saisie de Null). Si vous utilisez Arrays.fill ou quelque chose. Insérer lors de l'initialisation de la baie
before
val results = arrayOfNulls<RPSResult>(3)
Arrays.fill(results,RPSResult.DRAW)
after
val results = Array<RPSResult>(3,{RPSResult.DRAW})
static import Il semble que vous ne pouvez pas appeler une méthode statique sans donner un nom de classe avec une importation statique.
before
import game.rps.shape.Shape.*
///////////////////////////////
val results = judgeAll(SCISSOR, SCISSOR, SCISSOR, SCISSOR)
after
val results = Shape.judgeAll(SCISSOR, SCISSOR, SCISSOR, SCISSOR)
Ajouter un modificateur lateinit
before
private var currentShape: Array<Shape?>
after
private lateinit var currentShape: Array<Shape?>
before
Shape.judgeAll(currentShapes)
after
Shape.judgeAll(*currentShapes)
toArray toTypedArray
before
currentList.toArray(arrayOfNulls<Shape>(currentList.size))
after
currentList.toTypedArray()
J'ai donné tous ceux que j'ai vus pour le moment, donc certains d'entre eux n'ont rien à voir avec les informations que j'ai écrites ici, et j'en ai définitivement oublié certains. https://qiita.com/k5n/items/c8bf7a507b64f20eebd0 https://qiita.com/tasogarei/items/266ecf02576d48fc69f6 https://stackoverflow.com/questions/46682455/how-to-solve-violation-of-finite-bound-restriction-in-kotlin https://qiita.com/ssuzaki/items/8a550fca6775c1e6e147 https://qiita.com/k5n/items/18adb5c3503a54e96c22 https://qiita.com/ke__kyukyun1828/items/3832d0bf42e6f7ef150a https://qiita.com/koher/items/d9411a00986f14683a3f https://dogwood008.github.io/kotlin-web-site-ja/docs/reference/packages.html https://qiita.com/k5n/items/cc0377b75d8537ef8a85