2017-08-07 1 views
1

Während ich eine relativ einfache Anwendung von Java nach Kotlin umwandelte, stieß ich auf ein "Problem", das ich nicht beheben kann.Kotlin - Sekundärer Klassenkonstruktor mit anderem Parameter

Ich habe eine Klasse ScanInfo, die in Java (ohne Getter und Setter) sieht wie folgt aus

public class ScanInfo { 
    private String source; 
    private String label_type; 
    private String data; 

    public ScanInfo(Intent intent) { 
     ... Get Info from intent and assign the values ... 
     this.source = ... 
     this.label_type = .... 
     this.data = .... 
    } 
} 

Jetzt Kotlin in i

class ScanInfo (var source: String, var label_type: String, var data: String) 

die Klasse erstellen kann, aber ich habe keine Ahnung, wie man Damit es funktioniert, kann ich ein ScanInfo Objekt mit Intent als Parameter erstellen. Ich versuchte mit Begleiter, Objekt, Begleiter-Objekt, aber ich kann nicht scheinen, die richtige Syntax zu finden.

Bin ich falsch, eine solche Lösung während der Verwendung Kotlin zu suchen oder verwende ich gerade nicht die richtige kotlin-constructor? Wenn es möglich ist, wie kann ich ein ScanInfo Objekt mit einem Intent als Parameter erstellen?

var result = ScanInfo(intent) 

Vielen Dank im Voraus.

Antwort

2

Das ist die Art und Weise:

class ScanInfo(intent: Intent) { 
    private val source = intent.source 
    private val labelType = intent.labelType 
    private val data = intent.data 
} 

ODER

class ScanInfo(intent: Intent) { 
    private val source: String 
    private val labelType: String 
    private val data: String 

    init { 
     source = intent.data 
     labelType = intent.data 
     data = intent.data 
    } 
} 
+1

Sie benötigen die Sichtbarkeit –

+0

Nicht sicher, ob OP braucht Getter/Setter für seine Klasse hinzuzufügen Getter/Setter zu oder zu ändern, aber ja, du hast Recht. –

+0

mit der "init" -Methode ist die beste Wahl –

Verwandte Themen