Я переписываю свое java-приложение на kotlin, и одна вещь действительно не работает, как ожидалось, несмотря на то, что при написании и компиляции кода не было ошибок. Вместо этого я получаю ошибки во время выполнения, и это потому, что что-то сейчас правильно
- Это мой код Java:
A. CountryModel.java - моя модель класса
import com.appsmata.myapp.core.Searchable;
public class CountryModel implements Searchable {
private String Country;
private String CountryCode;
private String IsoCode;
public CountryModel(String country, String countryCode, String isoCode) {
Country = country;
CountryCode = countryCode;
IsoCode = isoCode;
}
@Override
public String getTitle() {
return getCcode() + " | " + getCountry() + " - " + getIcode();
}
public String getCountry() {
return Country;
}
public CountryModel setName(String country) {
Country = country;
return this;
}
public String getCcode() {
return CountryCode;
}
public CountryModel setShort(String countryCode) {
CountryCode = countryCode;
return this;
}
public String getIcode() {
return IsoCode;
}
public CountryModel setCode(String isoCode) {
IsoCode = isoCode;
return this;
}
}
B. Country.java - это класс с образцами данных, сгенерированными во время выполнения
import com.appsmata.myapp.models.CountryModel;
import java.util.ArrayList;
public class Countries {
public static ArrayList<CountryModel> createSampleData() {
ArrayList<CountryModel> countries = new ArrayList<CountryModel>();
countries.add(new CountryModel("Afghanistan", "AF", "93"));
countries.add(new CountryModel("Albania", "AL", "355"));
countries.add(new CountryModel("Sudan", "SD", "249"));
countries.add(new CountryModel("Suriname", "SR", "597"));
return countries;
}
}
C. MainActivity.java - это место, где я показываю список стран в моем архиве
public class MainActivity extends AppCompatActivity {
private ArrayList<CountryModel> countries;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
countries = new ArrayList<CountryModel>(Countries.createSampleData());
}
}
Код Kotlin: Теперь из того, что я узнал в Kotlin, я попытался переписать свой код и с помощью Android Studio
A. CountryModel.kt
import com.appsmata.myapp.core.Searchable
class CountryModel(country: String, countryCode: String, isoCode: String) : Searchable {
var country: String? = null
private set
var ccode: String? = null
private set
var icode: String? = null
private set
init {
this.country = country
ccode = countryCode
icode = isoCode
}
override fun getTitle(): String {
return "$ccode | $country - $icode"
}
fun setName(country: String): CountryModel {
this.country = country
return this
}
fun setShort(countryCode: String): CountryModel {
ccode = countryCode
return this
}
fun setCode(isoCode: String): CountryModel {
icode = isoCode
return this
}
}
B. Страны.КТ импорт com.appsmata.myapp.models.CountryModel
class Countries {
fun createSampleData(): ArrayList<CountryModel> {
val countries = ArrayList<CountryModel>()
countries.add(new CountryModel("Afghanistan", "AF", "93"))
countries.add(new CountryModel("Albania", "AL", "355"))
countries.add(new CountryModel("Sudan", "SD", "249"))
countries.add(new CountryModel("Suriname", "SR", "597"))
return countries
}
}
C. MainActivity.kt
class MainActivity : AppCompatActivity() {
private var countries: ArrayList<CountryModel>? = null
var ctrlist: Countries? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
countries = ArrayList(ctrlist!!.createSampleData())
}
}
ошибка возникает в строке, где я заполняю массив с образцами данных
страны = ArrayList (ctrlist !!. CreateSampleData ())