Ich habe die folgenden Methoden auf meinem Code:für wiederholte Aktionen
fun saveArticles(data: JSONArray) {
var active = String()
for (i in 0..data.length().minus(1)) // create string
val articles = Select.from(Article::class.java).list()
val iterator = articles.iterator()
while (iterator.hasNext()) {
val article = iterator.next() as Article
if (!active.contains(Regex(article.id.toString()))) article.delete()
}
}
fun saveDossiers(data: JSONArray) {
var active = String()
for (i in 0..data.length().minus(1)) // create string
val dossiers = Select.from(Dossier::class.java).list()
val iterator = dossiers.iterator()
while (iterator.hasNext()) {
val dossier = iterator.next() as Dossier
if (!active.contains(Regex(dossier.id.toString()))) dossier.delete()
}
}
fun saveVideos(data: JSONArray) {
var active = String()
for (i in 0..data.length().minus(1)) // create string
val videos = Select.from(Video::class.java).list()
val iterator = videos.iterator()
while (iterator.hasNext()) {
val video = iterator.next() as Video
if (!active.contains(Regex(video.id.toString()))) video.delete()
}
}
Wie Sie sehen können, alle Methoden zu tun genau das Gleiche. Der einzige Unterschied ist der Klassentyp des Objekts, an dem ich gerade arbeite. Kann ich irgendwie eine einzelne Methode mit einem Parameter vom Typ Klasse erstellen, und abhängig vom Typ die Klasse ändern, die ich arbeiten muss? Etwas wie folgt aus:
fun saveVideos(data: JSONArray, type: Class) {
var active = String()
for (i in 0..data.length().minus(1)) // create string
val list = Select.from(type).list()
val iterator = list.iterator()
while (iterator.hasNext()) {
val item = iterator.next() as type
if (!active.contains(Regex((item as type).id.toString()))) item.delete()
}
}
Extrakt 'delete' an eine Schnittstelle und lassen Sie alle Ihre Klasse, die eine Schnittstelle implementieren und – WenChao
ich nicht in dieser Schnittstelle als zweiten Parameter Ihrer Methode übergeben bin ganz sicher, was meinst du mit "pass in dieser Schnittstelle als zweiter Parameter". Ich arbeite selten mit Interfaces, daher bin ich mir nicht sicher, wie sie funktionieren. Können Sie ein Beispiel geben? – Ravers
Sie können einer Methode auch einen Typ hinzufügen. Etwas wie folgt aus: 'Inline-Spaß speichern (data: JSONArray) { val list = Select.from (T :: class.java) .list() }' Und dann nennen Sie es wie 'speichern