Я родом из фона ActionScript3, и это моя первая запись любой Java в моей жизни. Hashtables, похоже, похожи на словари во Flash, но я хочу убедиться, что правильно их использую. Я считаю, что Hashtable печатается, чтобы принимать строки как ключи и Typefaces как объекты. Это верно? Есть ли другой подкласс класса, который был бы более подходящим для чего-то подобного? Во что бы то ни стало, пожалуйста, разорвите мою n00b Java. Мне нужно это узнать.Является ли Hashtable подходящим для хранения активов?
package com.typeoneerror.apps.app_name.utils;
import android.content.Context;
import android.graphics.Typeface;
import java.util.Hashtable;
public class FontRegistry
{
private static FontRegistry _instance;
private Context _context;
private Hashtable<String, Typeface> _fonts;
private FontRegistry()
{
_fonts = new Hashtable<String, Typeface>();
}
public static FontRegistry getInstance()
{
if (_instance == null)
{
_instance = new FontRegistry();
}
return _instance;
}
public void init(Context context)
{
_context = context;
}
public Typeface getTypeface(int resourceId)
{
String fontName = _context.getResources().getString(resourceId);
if (!_fonts.containsKey(fontName))
{
String fontPath = "fonts/" + fontName;
Typeface typeface = Typeface.createFromAsset(_context.getAssets(), fontPath);
_fonts.put(fontName, typeface);
}
return (Typeface)_fonts.get(fontName);
}
}
За исключением того, что сказал rfeak, все в порядке. Еще несколько советов: когда вы опускаете символы подчеркивания (пожалуйста, сделайте), вам понадобится 'this.context = context'. Вы можете инициализировать шрифты наподобие 'private final Map fonts = new HashMap ()'. Если был параллелизм, тогда у вас могут возникнуть проблемы с вашим ленивым синглом. Включите предупреждение, ваш последний бросок, безусловно, не нужен. –
maaartinus
Будет ли доступ к этому классу одно- или многопоточным? Я только спрашиваю, как ваша текущая реализация 'getInstance()' не является потокобезопасной. –
@ dave.c Должен признаться, я понятия не имею. Как я уже сказал, это первый раз, когда я пишу java, поэтому любые советы по этому поводу в качестве ответа будут очень оценены. – typeoneerror