Adriano Celentano
11/22/2019, 10:47 AMdata class Document(val uri: Uri)
data class ValidatedDocument(val uri: Uri)
fun validateDocument(document: Document): ValidatedDocument {
val valid = true
if(valid) {
return ValidatedDocument(documentUpload.uri)
} else {
throw IllegalArgumentException("not valid")
}
}
fun uploadDocument(validatedDocument: ValidatedDocument) {
}
fun main() {
val doc = Document(uri = Uri.EMPTY)
val validDoc = validateDocument(doc)
uploadDocument(validDoc)
}
molikuner
11/22/2019, 11:00 AMdata class Document(val uri: String)
class ValidatedDocument private constructor(val uri: String) {
companion object {
fun create(doc: Document): ValidatedDocument {
val valid = true;
return if (valid) {
ValidatedDocument(doc.uri)
} else {
throw IllegalArgumentException("not valid")
}
}
}
}
fun main() {
val doc = Document(uri = "Uri.EMPTY")
val validDoc = ValidatedDocument.create(doc)
}
You can mark ValidatedDocument
as data class
but then there will be a .copy
function, which you don’t want, so you probably need to overwrite equals
,toString
, etc. yourself.molikuner
11/22/2019, 11:08 AMdata class Document(val uri: String) {
fun validate(): ValidatedDocument = ValidatedDocument(uri)
}
data class ValidatedDocument(val uri: String) {
init {
val valid = true
require(valid) { "not valid $uri" }
}
}
Adriano Celentano
11/22/2019, 11:37 AMUbi
11/22/2019, 12:11 PMUbi
11/22/2019, 12:13 PM