IFormattable Antarmuka

Definisi

Antarmuka Formattable harus diimplementasikan oleh kelas apa pun yang perlu melakukan pemformatan kustom menggunakan penentu 's' konversi .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
Atribut
Penerapan

Keterangan

Antarmuka Formattable harus diimplementasikan oleh kelas apa pun yang perlu melakukan pemformatan kustom menggunakan penentu 's' konversi .java.util.Formatter Antarmuka ini memungkinkan kontrol dasar untuk memformat objek arbitrer.

Misalnya, kelas berikut mencetak representasi yang berbeda dari nama saham tergantung pada bendera dan batasan panjang:

{@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);
                  }
              }
            }

Ketika digunakan bersama dengan java.util.Formatter, kelas di atas menghasilkan output berikut untuk berbagai string format.

{@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."
            }

Formattable belum tentu aman untuk akses multithreaded. Keamanan utas bersifat opsional dan dapat diberlakukan oleh kelas yang memperluas dan mengimplementasikan antarmuka ini.

Kecuali ditentukan lain, meneruskan null argumen ke metode apa pun dalam antarmuka ini akan menyebabkan NullPointerException dilemparkan.

Ditambahkan dalam 1.5.

Java dokumentasi untuk java.util.Formattable.

Bagian halaman ini adalah modifikasi berdasarkan pekerjaan yang dibuat dan dibagikan oleh Proyek Sumber Terbuka Android dan digunakan sesuai dengan istilah yang dijelaskan dalam Lisensi Atribusi Creative Commons 2.5.

Properti

Nama Deskripsi
Handle

Mendapatkan nilai JNI dari objek Android yang mendasar.

(Diperoleh dari IJavaObject)
JniIdentityHashCode

Mengembalikan nilai java.lang.System.identityHashCode() untuk instans yang dibungkus.

(Diperoleh dari IJavaPeerable)
JniManagedPeerState

Status serekan terkelola.

(Diperoleh dari IJavaPeerable)
JniPeerMembers

Akses anggota dan dukungan pemanggilan.

(Diperoleh dari IJavaPeerable)
PeerReference

Mengembalikan instans objek Java yang dibungkusJniObjectReference.

(Diperoleh dari IJavaPeerable)

Metode

Nama Deskripsi
Disposed()

Dipanggil ketika instans telah dibuang.

(Diperoleh dari IJavaPeerable)
DisposeUnlessReferenced()

Jika tidak ada referensi yang luar biasa untuk instans ini, maka panggilan Dispose(); jika tidak, tidak melakukan apa pun.

(Diperoleh dari IJavaPeerable)
Finalized()

Dipanggil ketika instans telah diselesaikan.

(Diperoleh dari IJavaPeerable)
FormatTo(Formatter, FormatFlags, Int32, Int32)

Memformat objek menggunakan yang disediakan Formatter formatter.

SetJniIdentityHashCode(Int32)

Atur nilai yang dikembalikan oleh JniIdentityHashCode.

(Diperoleh dari IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Antarmuka Formattable harus diimplementasikan oleh kelas apa pun yang perlu melakukan pemformatan kustom menggunakan penentu 's' konversi .java.util.Formatter

(Diperoleh dari IJavaPeerable)
SetPeerReference(JniObjectReference)

Atur nilai yang dikembalikan oleh PeerReference.

(Diperoleh dari IJavaPeerable)
UnregisterFromRuntime()

Batalkan pendaftaran instans ini sehingga runtime tidak akan mengembalikannya dari pemanggilan di masa mendatang Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Diperoleh dari IJavaPeerable)

Metode Ekstensi

Nama Deskripsi
GetJniTypeName(IJavaPeerable)

Mendapatkan nama JNI dari jenis instans self.

JavaAs<TResult>(IJavaPeerable)

Cobalah untuk memaksa self untuk mengetik TResult, memeriksa bahwa paksaan valid di sisi Java.

JavaCast<TResult>(IJavaObject)

Melakukan konversi jenis yang diperiksa runtime Android.

JavaCast<TResult>(IJavaObject)

Antarmuka Formattable harus diimplementasikan oleh kelas apa pun yang perlu melakukan pemformatan kustom menggunakan penentu 's' konversi .java.util.Formatter

TryJavaCast<TResult>(IJavaPeerable, TResult)

Cobalah untuk memaksa self untuk mengetik TResult, memeriksa bahwa paksaan valid di sisi Java.

Berlaku untuk