Tôi đến từ một nền Actionscript3 và đây là lần đầu tiên tôi viết bất kỳ Java nào trong cuộc đời của tôi. Hashtables có vẻ tương tự như Từ điển trong Flash, nhưng tôi muốn đảm bảo rằng tôi đang sử dụng chúng một cách chính xác. Tôi tin rằng Hashtable được gõ để chấp nhận các chuỗi như các phím và kiểu chữ làm đối tượng. Điều này có đúng không? Có một lớp con Bộ sưu tập khác sẽ thích hợp hơn cho một thứ như thế này không? Bởi tất cả các phương tiện, xin vui lòng xé n00b của tôi Java lên. Tôi cần phải học điều này.Có phải Hashtable thích hợp để lưu trữ nội dung không?
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);
}
}
Ngoại trừ những gì rfeak đã nói, nó ổn. Một số mẹo khác: Khi bạn bỏ dấu gạch dưới (làm ơn), thì bạn cần 'this.context = context'. Bạn có thể khởi tạo các phông chữ như 'Bản đồ cuối cùng riêng tư fonts = new HashMap ()'. Nếu có đồng thời, sau đó bạn có thể nhận được vấn đề với singleton lười biếng của bạn. Bật cảnh báo, diễn viên cuối cùng của bạn chắc chắn là không cần thiết. –
maaartinus
Quyền truy cập vào lớp này có phải là một hoặc nhiều luồng không? Tôi chỉ yêu cầu như hiện tại của bạn 'getInstance()' không phải là luồng an toàn. –
@ dave.c Tôi phải thừa nhận là tôi không biết. Như tôi đã nói, đây là lần đầu tiên tôi viết java, vì vậy mọi lời khuyên về điều đó như một câu trả lời sẽ được đánh giá cao. – typeoneerror