Читая книгу "Программирование под Android" Брайна Харди, я столкнулся со следующим кодом. Существует класс синглтон:
public class CrimeLab {
private static CrimeLab sCrimeLab;
private Context mAppContext;
public ArrayList<Crime> mCrimes;
private CrimeLab (Context appContext){
mAppContext = appContext;
mCrimes = new ArrayList<Crime>();
}
public ArrayList<Crime> getCrimes() {
return mCrimes;
}
public static CrimeLab get(Context c){
if (sCrimeLab == null){
sCrimeLab = new CrimeLab (c.getApplicationContext());
}
return sCrimeLab;
}
}
Существует ещё один класс, в котором обращаются к методу get и getCrimes класса CrimeLab:
public class CrimeListFragment extends ListFragment {
private ArrayList<Crime> mCrimes;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCrimes = CrimeLab.get(getActivity()).getCrimes();
}
}
Меня интересует эта строка кода mCrimes = CrimeLab.get(getActivity()).getCrimes();
. Как мы обращаемся к CrimeLab, если мы не создали экземпляр класса CrimeLab, а статической является лишь переменная sCrimeLab в CrimeLab? Могу предположить, что приставка s не учитывается, или я сильно не понимаю принцип синглтонов.
s
в данном случае является обозначением статической переменной, но название никак не влияет на её суть, оно может быть любым.
Метод get
, также является статическим.
В коде написано, что если sCrimeLab
является null
, то необходимо создать экземпляр класса в ином случае вернётся существующий экземпляр.
По хорошему можно разделить строку mCrimes = CrimeLab.get(getActivity()).getCrimes();
на
CrimeLab crimeLab = CrimeLab.get(getActivity());
mCrimes = crimeLab.getCrimes();
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вроде все верно, но что-то не такЗадача на английском закоментирована в коде
В интернете не нашел ни описания, ни документации этой функцииЧто она делает? И есть ли другие аналоги ResourceMap? Например, я где то слышал что...
Имеется HashSet объектов из них хотелось бы что бы хеш объекта и его уникальность оценивалась только по определённому его полю а не по всему...
Методы compareTo() и compareToIgnoreCase() позволяют сравнивать строки, но они позволяют вычислить насколько одна строка больше другойКак я понял