W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
public interface Formattable
Formattable 接口必須由任何需要使用 Formatter 的 's' 轉(zhuǎn)換說明符執(zhí)行自定義格式化的類來實現(xiàn)。 該接口允許對任意對象進行格式化的基本控制。 例如,以下類根據(jù)標志和長度限制打印出股票名稱的不同表示:
import java.nio.CharBuffer;
import java.util.Formatter;
import java.util.Formattable;
import java.util.Locale;
import static java.util.FormattableFlags.*;
...
public class StockName implements Formattable {
private String symbol, companyName, frenchCompanyName;
public StockName(String symbol, String companyName,
String frenchCompanyName) {
...
}
...
public void formatTo(Formatter fmt, int f, int width, int precision) {
StringBuilder sb = new StringBuilder();
// decide form of name
String name = companyName;
if (fmt.locale().equals(Locale.FRANCE))
name = frenchCompanyName;
boolean alternate = (f & ALTERNATE) == ALTERNATE;
boolean usesymbol = alternate || (precision != -1 && precision < 10);
String out = (usesymbol ? symbol : name);
// apply precision
if (precision == -1 || out.length() < precision) {
// write it all
sb.append(out);
} else {
sb.append(out.substring(0, precision - 1)).append('*');
}
// apply width and justification
int len = sb.length();
if (len < width)
for (int i = 0; i < width - len; i++)
if ((f & LEFT_JUSTIFY) == LEFT_JUSTIFY)
sb.append(' ');
else
sb.insert(0, ' ');
fmt.format(sb.toString());
}
public String toString() {
return String.format("%s - %s", symbol, companyName);
}
}
當與 Formatter 結(jié)合使用時,上述類為各種格式字符串生成以下輸出。
Formatter fmt = new Formatter();
StockName sn = new StockName("HUGE", "Huge Fruit, Inc.",
"Fruit Titanesque, Inc.");
fmt.format("%s", sn); // -> "Huge Fruit, Inc."
fmt.format("%s", sn.toString()); // -> "HUGE - Huge Fruit, Inc."
fmt.format("%#s", sn); // -> "HUGE"
fmt.format("%-10.8s", sn); // -> "HUGE "
fmt.format("%.12s", sn); // -> "Huge Fruit,*"
fmt.format(Locale.FRANCE, "%25s", sn); // -> " Fruit Titanesque, Inc."
格式化表對于多線程訪問不一定是安全的。 線程安全是可選的,可以由擴展和實現(xiàn)此接口的類強制執(zhí)行。
除非另有說明,否則將 null 參數(shù)傳遞給此接口中的任何方法都將導(dǎo)致拋出 NullPointerException。
修飾符和類型 | 方法 | 描述 |
---|---|---|
void | formatTo(Formatter formatter, int flags, int width, int precision) | 使用提供的 Formatter 格式化對象。 |
void formatTo(Formatter formatter, int flags, int width, int precision)
使用提供的 Formatter 格式化對象。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
formatter | 格式化程序。 實現(xiàn)類可以調(diào)用 Formatter#out() 或 Formatter#locale() 來分別獲取此格式化程序使用的 Appendable 或 Locale。 |
flags | 標志修改輸出格式。 該值被解釋為位掩碼。 可以設(shè)置以下標志的任意組合:FormattableFlags#LEFT_JUSTIFY、FormattableFlags#UPPERCASE 和 FormattableFlags#ALTERNATE。 如果沒有設(shè)置標志,則應(yīng)用實現(xiàn)類的默認格式。 |
width | 要寫入輸出的最小字符數(shù)。 如果轉(zhuǎn)換后的值的長度小于寬度,則輸出將用 ' ' 填充,直到字符總數(shù)等于寬度。 默認情況下,填充位于開頭。 如果設(shè)置了 FormattableFlags#LEFT_JUSTIFY 標志,則填充將在末尾。 如果寬度為-1,則沒有最小值。 |
precision | 要寫入輸出的最大字符數(shù)。 精度在寬度之前應(yīng)用,因此即使寬度大于精度,輸出也會被截斷為精度字符。 如果精度為 -1,則對字符數(shù)沒有明確限制。 |
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalFormatException | 如果任何參數(shù)無效。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: