IFormattable 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
Formattable
介面必須由需要使用 的 's'
轉換規範執行自訂格式設定的任何類別實 java.util.Formatter
作。
[Android.Runtime.Register("java/util/Formattable", "", "Java.Util.IFormattableInvoker")]
public interface IFormattable : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/Formattable", "", "Java.Util.IFormattableInvoker")>]
type IFormattable = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 屬性
- 實作
備註
Formattable
介面必須由需要使用 的 's'
轉換規範執行自訂格式設定的任何類別實 java.util.Formatter
作。 這個介面允許格式化任意物件的基本控制項。
例如,下列類別會根據旗標和長度條件約束,列印出股票名稱的不同標記法:
{@code
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);
}
}
}
與 搭配 java.util.Formatter
使用時,上述類別會產生各種格式字串的下列輸出。
{@code
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."
}
格式表不一定安全用於多執行緒存取。 執行緒安全性是選擇性的,而且可由擴充和實作此介面的類別強制執行。
除非另有指定,否則將 null
引數傳遞至這個介面中的任何方法將會導致 NullPointerException
擲回 。
在 1.5 中新增。
的 java.util.Formattable
JAVA 檔。
此頁面的部分是根據所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。
屬性
Handle |
取得基礎 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
JniIdentityHashCode |
傳回已包裝實例的 值 |
JniManagedPeerState |
Managed 對等的狀態。 (繼承來源 IJavaPeerable) |
JniPeerMembers |
成員存取和調用支援。 (繼承來源 IJavaPeerable) |
PeerReference |
傳 JniObjectReference 回已包裝 JAVA 物件實例的 。 (繼承來源 IJavaPeerable) |
方法
Disposed() |
處置實例時呼叫。 (繼承來源 IJavaPeerable) |
DisposeUnlessReferenced() |
如果這個實例沒有未完成的參考,則呼叫 |
Finalized() |
實例完成時呼叫。 (繼承來源 IJavaPeerable) |
FormatTo(Formatter, FormatFlags, Int32, Int32) |
使用提供的 |
SetJniIdentityHashCode(Int32) |
設定 所 |
SetJniManagedPeerState(JniManagedPeerStates) |
|
SetPeerReference(JniObjectReference) |
設定 所 |
UnregisterFromRuntime() |
取消註冊這個實例,讓執行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。 (繼承來源 IJavaPeerable) |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
|
GetJniTypeName(IJavaPeerable) |
|