Project Coin より小さなCoin
知っていると得するかもしれない地味なあれ
やまもと かずきtwitter: @yamkazuhatena: yamkazu
今日の話
JDK 7 の Featuresからは気がつかないちょっとした変更点を紹介します
java.applet.Applet#isValidateRootjava.awt.Window#setAutoRequestFocusjava.awt.Window#isAutoRequestFocusjava.awt.Window#isValidateRootjava.awt.Window#setTypejava.awt.Window#getTypejava.awt.Window#getOpacityjava.awt.Window#setOpacityjava.awt.Window#getShapejava.awt.Window#setShapejava.awt.Window#isOpaquejava.awt.Window#paintjava.awt.Window.Type [class]java.awt.Toolkit#areExtraMouseButtonsEnabledjava.awt.SecondaryLoop [class]java.awt.GraphicsDevice#isWindowTranslucencySupportedjava.awt.GraphicsDevice.WindowTranslucency [class]java.awt.GraphicsConfiguration#isTranslucencyCapablejava.awt.FileDialog#getFilesjava.awt.FileDialog#setMultipleModejava.awt.FileDialog#isMultipleModejava.awt.EventQueue#createSecondaryLoopjava.awt.Container#isValidateRootjava.awt.Component#revalidatejava.awt.event.MouseWheelEvent#getPreciseWheelRotationjava.awt.event.KeyEvent#getExtendedKeyCodejava.awt.event.KeyEvent#getExtendedKeyCodeForCharjava.awt.event.InvocationEvent#isDispatchedjava.awt.font.NumericShaper#getShaperjava.awt.font.NumericShaper#getContextualShaperjava.awt.font.NumericShaper#getContextualShaperjava.awt.font.NumericShaper#shapejava.awt.font.NumericShaper#getRangeSetjava.awt.font.NumericShaper.Range [class]java.awt.peer.ComponentPeer#applyShapejava.awt.peer.ComponentPeer#updateGraphicsDatajava.awt.peer.CanvasPeer#getAppropriateGraphicsConfigurationjava.beans.XMLDecoder#createHandlerjava.beans.Transient [class]java.beans.PropertyChangeEvent#toStringjava.beans.Introspector#getBeanInfojava.beans.FeatureDescriptor#toStringjava.beans.Expression#executejava.io.File#toPathjava.lang.Throwable#addSuppressedjava.lang.Throwable#getSuppressedjava.lang.Short#comparejava.lang.ReflectiveOperationException [class]java.lang.ProcessBuilder#redirectInputjava.lang.ProcessBuilder#redirectOutputjava.lang.ProcessBuilder#redirectErrorjava.lang.ProcessBuilder#redirectInputjava.lang.ProcessBuilder#redirectOutputjava.lang.ProcessBuilder#redirectErrorjava.lang.ProcessBuilder#redirectInputjava.lang.ProcessBuilder#redirectOutputjava.lang.ProcessBuilder#redirectErrorjava.lang.ProcessBuilder#inheritIOjava.lang.ProcessBuilder.Redirect [class]java.lang.Long#comparejava.lang.Integer#comparejava.lang.ClassValue [class]java.lang.ClassLoader#getClassLoadingLockjava.lang.ClassLoader#registerAsParallelCapablejava.lang.Character#isBmpCodePointjava.lang.Character#isSurrogatejava.lang.Character#highSurrogatejava.lang.Character#lowSurrogatejava.lang.Character#isAlphabeticjava.lang.Character#isIdeographicjava.lang.Character#comparejava.lang.Character#getNamejava.lang.Character.UnicodeScript [class]java.lang.Byte#comparejava.lang.BootstrapMethodError [class]java.lang.Boolean#comparejava.lang.AutoCloseable [class]java.lang.invoke.WrongMethodTypeException [class]java.lang.management.PlatformManagedObject [class]java.lang.management.PlatformLoggingMXBean [class]java.lang.management.ManagementFactory#getPlatformMXBeanjava.lang.management.ManagementFactory#getPlatformMXBeansjava.lang.management.ManagementFactory#getPlatformMXBeanjava.lang.management.ManagementFactory#getPlatformMXBeansjava.lang.management.ManagementFactory#getPlatformManagementInterfacesjava.lang.management.BufferPoolMXBean [class]java.lang.reflect.Modifier#classModifiersjava.lang.reflect.Modifier#interfaceModifiersjava.lang.reflect.Modifier#constructorModifiersjava.lang.reflect.Modifier#methodModifiersjava.lang.reflect.Modifier#fieldModifiersjava.net.URLClassLoader#getResourceAsStreamjava.net.URLClassLoader#closejava.net.StandardSocketOptions [class]java.net.StandardProtocolFamily [class]java.net.SocketOption [class]java.net.ProtocolFamily [class]java.net.NetworkInterface#getIndexjava.net.NetworkInterface#getByIndexjava.net.InetSocketAddress#getHostStringjava.net.InetAddress#getLoopbackAddressjava.net.HttpURLConnection#setFixedLengthStreamingModejava.nio.channels.WritePendingException [class]java.nio.channels.SocketChannel#bindjava.nio.channels.SocketChannel#setOptionjava.nio.channels.SocketChannel#shutdownInputjava.nio.channels.SocketChannel#shutdownOutputjava.nio.channels.SocketChannel#getRemoteAddressjava.nio.channels.ShutdownChannelGroupException [class]java.nio.channels.ServerSocketChannel#bindjava.nio.channels.ServerSocketChannel#bindjava.nio.channels.ServerSocketChannel#setOptionjava.nio.channels.SeekableByteChannel [class]java.nio.channels.ReadPendingException [class]java.nio.channels.NetworkChannel [class]java.nio.channels.MulticastChannel [class]java.nio.channels.MembershipKey [class]java.nio.channels.InterruptedByTimeoutException [class]java.nio.channels.IllegalChannelGroupException [class]java.nio.channels.FileLock#acquiredByjava.nio.channels.FileLock#closejava.nio.channels.FileChannel#openjava.nio.channels.FileChannel#openjava.nio.channels.DatagramChannel#openjava.nio.channels.DatagramChannel#bindjava.nio.channels.DatagramChannel#setOption
java.nio.channels.DatagramChannel#getRemoteAddressjava.nio.channels.CompletionHandler [class]java.nio.channels.Channels#newInputStreamjava.nio.channels.Channels#newOutputStreamjava.nio.channels.AsynchronousSocketChannel [class]java.nio.channels.AsynchronousServerSocketChannel [class]java.nio.channels.AsynchronousFileChannel [class]java.nio.channels.AsynchronousChannelGroup [class]java.nio.channels.AsynchronousChannel [class]java.nio.channels.AsynchronousByteChannel [class]java.nio.channels.AlreadyBoundException [class]java.nio.channels.AcceptPendingException [class]java.nio.channels.spi.SelectorProvider#openDatagramChanneljava.nio.channels.spi.AsynchronousChannelProvider [class]java.nio.charset.StandardCharsets [class]java.nio.file.Watchable [class]java.nio.file.WatchService [class]java.nio.file.WatchKey [class]java.nio.file.WatchEvent [class]java.nio.file.WatchEvent.Kind [class]java.nio.file.WatchEvent.Modifier [class]java.nio.file.StandardWatchEventKinds [class]java.nio.file.StandardOpenOption [class]java.nio.file.StandardCopyOption [class]java.nio.file.SimpleFileVisitor [class]java.nio.file.SecureDirectoryStream [class]java.nio.file.Paths [class]java.nio.file.PathMatcher [class]java.nio.file.Path [class]java.nio.file.OpenOption [class]java.nio.file.NotLinkException [class]java.nio.file.NotDirectoryException [class]java.nio.file.NoSuchFileException [class]java.nio.file.LinkPermission [class]java.nio.file.LinkOption [class]java.nio.file.Files [class]java.nio.file.FileVisitor [class]java.nio.file.FileVisitResult [class]java.nio.file.FileVisitOption [class]java.nio.file.FileSystems [class]java.nio.file.FileSystemLoopException [class]java.nio.file.FileSystemException [class]java.nio.file.FileSystem [class]java.nio.file.FileStore [class]java.nio.file.FileAlreadyExistsException [class]java.nio.file.DirectoryStream [class]java.nio.file.DirectoryStream.Filter [class]java.nio.file.DirectoryNotEmptyException [class]java.nio.file.DirectoryIteratorException [class]java.nio.file.CopyOption [class]java.nio.file.ClosedDirectoryStreamException [class]java.nio.file.AtomicMoveNotSupportedException [class]java.nio.file.AccessMode [class]java.nio.file.AccessDeniedException [class]java.nio.file.attribute.UserPrincipalNotFoundException [class]java.nio.file.attribute.UserPrincipalLookupService [class]java.nio.file.attribute.UserPrincipal [class]java.nio.file.attribute.UserDefinedFileAttributeView [class]java.nio.file.attribute.PosixFilePermissions [class]java.nio.file.attribute.PosixFilePermission [class]java.nio.file.attribute.PosixFileAttributes [class]java.nio.file.attribute.PosixFileAttributeView [class]java.nio.file.attribute.GroupPrincipal [class]java.nio.file.attribute.FileTime [class]java.nio.file.attribute.FileStoreAttributeView [class]java.nio.file.attribute.FileOwnerAttributeView [class]java.nio.file.attribute.FileAttributeView [class]java.nio.file.attribute.FileAttribute [class]java.nio.file.attribute.DosFileAttributes [class]java.nio.file.attribute.DosFileAttributeView [class]java.nio.file.attribute.BasicFileAttributes [class]java.nio.file.attribute.BasicFileAttributeView [class]java.nio.file.attribute.AttributeView [class]java.nio.file.attribute.AclFileAttributeView [class]java.nio.file.attribute.AclEntryType [class]java.nio.file.attribute.AclEntryPermission [class]java.nio.file.attribute.AclEntryFlag [class]java.nio.file.attribute.AclEntry [class]java.nio.file.attribute.AclEntry.Builder [class]java.nio.file.spi.FileTypeDetector [class]java.nio.file.spi.FileSystemProvider [class]java.security.CryptoPrimitive [class]java.security.AlgorithmConstraints [class]java.security.cert.X509CRLEntry#getRevocationReasonjava.security.cert.PKIXReason [class]java.security.cert.Extension [class]java.security.cert.CertificateRevokedException [class]java.security.cert.CertPathValidatorException#getReasonjava.security.cert.CertPathValidatorException.Reason [class]java.security.cert.CertPathValidatorException.BasicReason [class]java.security.cert.CRLReason [class]java.sql.Statement#closeOnCompletionjava.sql.Statement#isCloseOnCompletionjava.sql.ResultSet#getObjectjava.sql.ResultSet#getObjectjava.sql.PseudoColumnUsage [class]java.sql.Driver#getParentLoggerjava.sql.DatabaseMetaData#getPseudoColumnsjava.sql.DatabaseMetaData#generatedKeyAlwaysReturnedjava.sql.Connection#setSchemajava.sql.Connection#getSchemajava.sql.Connection#abortjava.sql.Connection#setNetworkTimeoutjava.sql.Connection#getNetworkTimeoutjava.sql.CallableStatement#getObjectjava.sql.CallableStatement#getObjectjava.util.TimeZone#observesDaylightTimejava.util.SimpleTimeZone#observesDaylightTimejava.util.Objects [class]java.util.Locale#getDefaultjava.util.Locale#setDefaultjava.util.Locale#getScriptjava.util.Locale#getExtensionjava.util.Locale#getExtensionKeysjava.util.Locale#getUnicodeLocaleAttributesjava.util.Locale#getUnicodeLocaleTypejava.util.Locale#getUnicodeLocaleKeysjava.util.Locale#toLanguageTagjava.util.Locale#forLanguageTagjava.util.Locale#getDisplayScriptjava.util.Locale#getDisplayScriptjava.util.Locale.Category [class]java.util.Locale.Builder [class]java.util.IllformedLocaleException [class]java.util.GregorianCalendar#isWeekDateSupportedjava.util.GregorianCalendar#getWeekYear
java.util.GregorianCalendar#setWeekDatejava.util.GregorianCalendar#getWeeksInWeekYearjava.util.Currency#getAvailableCurrenciesjava.util.Currency#getNumericCodejava.util.Currency#getDisplayNamejava.util.Currency#getDisplayNamejava.util.Collections#emptyIteratorjava.util.Collections#emptyListIteratorjava.util.Collections#emptyEnumerationjava.util.Calendar#isWeekDateSupportedjava.util.Calendar#getWeekYearjava.util.Calendar#setWeekDatejava.util.Calendar#getWeeksInWeekYearjava.util.BitSet#valueOfjava.util.BitSet#valueOfjava.util.BitSet#valueOfjava.util.BitSet#valueOfjava.util.BitSet#toByteArrayjava.util.BitSet#toLongArrayjava.util.BitSet#previousSetBitjava.util.BitSet#previousClearBitjava.util.concurrent.TransferQueue [class]java.util.concurrent.ThreadLocalRandom [class]java.util.concurrent.ScheduledThreadPoolExecutor#setRemoveOnCancelPolicyjava.util.concurrent.ScheduledThreadPoolExecutor#getRemoveOnCancelPolicyjava.util.concurrent.RecursiveTask [class]java.util.concurrent.RecursiveAction [class]java.util.concurrent.Phaser [class]java.util.concurrent.LinkedTransferQueue [class]java.util.concurrent.ForkJoinWorkerThread [class]java.util.concurrent.ForkJoinTask [class]java.util.concurrent.ForkJoinPool [class]java.util.concurrent.ConcurrentLinkedDeque [class]java.util.concurrent.locks.AbstractQueuedSynchronizer#hasQueuedPredecessorsjava.util.concurrent.locks.AbstractQueuedLongSynchronizer#hasQueuedPredecessorsjava.util.logging.Logger#getGlobaljava.util.spi.LocaleNameProvider#getDisplayScriptjava.util.spi.CurrencyNameProvider#getDisplayNamejava.util.zip.DeflaterOutputStream#flushjava.util.zip.Deflater#deflatejavax.lang.model.UnknownEntityException [class]javax.lang.model.element.QualifiedNameable [class]javax.lang.model.element.Parameterizable [class]javax.lang.model.type.UnionType [class]javax.lang.model.type.TypeVisitor#visitUnionjavax.lang.model.util.TypeKindVisitor7 [class]javax.lang.model.util.SimpleTypeVisitor7 [class]javax.lang.model.util.SimpleElementVisitor7 [class]javax.lang.model.util.SimpleAnnotationValueVisitor7 [class]javax.lang.model.util.ElementScanner7 [class]javax.lang.model.util.ElementKindVisitor7 [class]javax.lang.model.util.ElementKindVisitor6#visitVariableAsResourceVariablejavax.lang.model.util.AbstractTypeVisitor7 [class]javax.lang.model.util.AbstractTypeVisitor6#visitUnionjavax.lang.model.util.AbstractElementVisitor7 [class]javax.lang.model.util.AbstractAnnotationValueVisitor7 [class]javax.print.attribute.standard.DialogTypeSelection [class]javax.security.auth.kerberos.KeyTab [class]javax.sound.midi.MidiDeviceTransmitter [class]javax.sound.midi.MidiDeviceReceiver [class]javax.sql.CommonDataSource#getParentLoggerjavax.sql.rowset.RowSetProvider [class]javax.sql.rowset.RowSetProvider#newFactoryjavax.sql.rowset.RowSetProvider#newFactoryjavax.sql.rowset.RowSetFactory [class]javax.sql.rowset.RowSetFactory#createCachedRowSetjavax.sql.rowset.RowSetFactory#createFilteredRowSetjavax.sql.rowset.RowSetFactory#createJdbcRowSetjavax.sql.rowset.RowSetFactory#createJoinRowSetjavax.sql.rowset.RowSetFactory#createWebRowSetjavax.swing.SwingUtilities#getUnwrappedParentjavax.swing.SwingUtilities#getUnwrappedViewjavax.swing.JTree.EmptySelectionModel#setSelectionModejavax.swing.JTree.EmptySelectionModel#setRowMapperjavax.swing.JTree.EmptySelectionModel#addTreeSelectionListenerjavax.swing.JTree.EmptySelectionModel#removeTreeSelectionListenerjavax.swing.JTree.EmptySelectionModel#addPropertyChangeListenerjavax.swing.JTree.EmptySelectionModel#removePropertyChangeListenerjavax.swing.JSlider#imageUpdatejavax.swing.JList#getSelectedValuesListjavax.swing.JLayer [class]javax.swing.BorderFactory#createLineBorderjavax.swing.BorderFactory#createRaisedSoftBevelBorderjavax.swing.BorderFactory#createLoweredSoftBevelBorderjavax.swing.BorderFactory#createSoftBevelBorderjavax.swing.BorderFactory#createSoftBevelBorderjavax.swing.BorderFactory#createSoftBevelBorderjavax.swing.BorderFactory#createStrokeBorderjavax.swing.BorderFactory#createStrokeBorderjavax.swing.BorderFactory#createDashedBorderjavax.swing.BorderFactory#createDashedBorderjavax.swing.BorderFactory#createDashedBorderjavax.swing.border.StrokeBorder [class]javax.swing.event.HyperlinkEvent#getInputEventjavax.swing.plaf.LayerUI [class]javax.swing.plaf.FileChooserUI#getDefaultButtonjavax.swing.plaf.basic.BasicTreeUI#isDropLinejavax.swing.plaf.basic.BasicTreeUI#paintDropLinejavax.swing.plaf.basic.BasicTreeUI#getDropLineRectjavax.swing.plaf.basic.BasicTreeUI#updateLeadSelectionRowjavax.swing.plaf.basic.BasicTreeUI#getLeadSelectionRowjavax.swing.plaf.basic.BasicFileChooserUI#createUIjavax.swing.plaf.basic.BasicComboBoxUI#getSizeForComponentjavax.swing.plaf.basic.BasicColorChooserUI#uninstallPreviewPaneljavax.swing.plaf.nimbus.NimbusLookAndFeel#shouldUpdateStyleOnEventjavax.swing.plaf.synth.SynthViewportUI [class]javax.swing.plaf.synth.SynthUI [class]javax.swing.plaf.synth.SynthTreeUI [class]javax.swing.plaf.synth.SynthToolTipUI [class]javax.swing.plaf.synth.SynthToolBarUI [class]javax.swing.plaf.synth.SynthToggleButtonUI [class]javax.swing.plaf.synth.SynthTextPaneUI [class]javax.swing.plaf.synth.SynthTextFieldUI [class]javax.swing.plaf.synth.SynthTextAreaUI [class]javax.swing.plaf.synth.SynthTableUI [class]javax.swing.plaf.synth.SynthTableHeaderUI [class]javax.swing.plaf.synth.SynthTabbedPaneUI [class]javax.swing.plaf.synth.SynthSplitPaneUI [class]javax.swing.plaf.synth.SynthSpinnerUI [class]javax.swing.plaf.synth.SynthSliderUI [class]javax.swing.plaf.synth.SynthSeparatorUI [class]javax.swing.plaf.synth.SynthScrollPaneUI [class]javax.swing.plaf.synth.SynthScrollBarUI [class]javax.swing.plaf.synth.SynthRootPaneUI [class]javax.swing.plaf.synth.SynthRadioButtonUI [class]javax.swing.plaf.synth.SynthRadioButtonMenuItemUI [class]
javax.swing.plaf.synth.SynthProgressBarUI [class]javax.swing.plaf.synth.SynthPopupMenuUI [class]javax.swing.plaf.synth.SynthPasswordFieldUI [class]javax.swing.plaf.synth.SynthPanelUI [class]javax.swing.plaf.synth.SynthOptionPaneUI [class]javax.swing.plaf.synth.SynthMenuUI [class]javax.swing.plaf.synth.SynthMenuItemUI [class]javax.swing.plaf.synth.SynthMenuBarUI [class]javax.swing.plaf.synth.SynthLookAndFeel#shouldUpdateStyleOnEventjavax.swing.plaf.synth.SynthListUI [class]javax.swing.plaf.synth.SynthLabelUI [class]javax.swing.plaf.synth.SynthInternalFrameUI [class]javax.swing.plaf.synth.SynthFormattedTextFieldUI [class]javax.swing.plaf.synth.SynthEditorPaneUI [class]javax.swing.plaf.synth.SynthDesktopPaneUI [class]javax.swing.plaf.synth.SynthDesktopIconUI [class]javax.swing.plaf.synth.SynthComboBoxUI [class]javax.swing.plaf.synth.SynthColorChooserUI [class]javax.swing.plaf.synth.SynthCheckBoxUI [class]javax.swing.plaf.synth.SynthCheckBoxMenuItemUI [class]javax.swing.plaf.synth.SynthButtonUI [class]javax.swing.text.JTextComponent#saveComposedTextjavax.swing.text.JTextComponent#restoreComposedTextjavax.swing.text.DefaultStyledDocument#removeElementjavax.swing.tree.DefaultTreeCellRenderer#updateUI
403
ObjectsShortLongIntegerCharacterByteBooleanCollectionsAssertionErrorInetAddressThrowableProcessBuilderCalendar
だいぶ地味な内容なので聞きながら「で?」とか思わず「おぉ、地味だなぁ」
というスタンスでお楽しみください。
はじめに
ObjectsShortLongIntegerCharacterByteBooleanCollectionsAssertionErrorInetAddressThrowableProcessBuilderCalendar
Objects
public static boolean equals(Object a, Object b)
public static boolean deepEquals(Object a, Object b)
public static int hashCode(Object o)
public static int hash(Object... values)
public static String toString(Object o)
public static String toString(Object o, String nullDefault)
public static <T> int compare(T a, T b, Comparator<? super T> c)
public static <T> T requireNonNull(T obj)
public static <T> T requireNonNull(T obj, String message)
NEW
Objects#equals
Object o1 = new Object();Object o2 = o1;assert Objects.equals(o1, o2); // true
// 内部的には == で比較して// falseならequalsを呼び出す// return (a == b) || (a != null && a.equals(b))
assert Objects.equals("aaa", "aaa"); // true
Objects#deepEquals
int[][] a1 = { {1, 2, 3}, {4, 5, 6} };int[][] a2 = { {1, 2, 3}, {4, 5, 6} };
// Arrays.deepEqualsとだいたい一緒assert Objects.deepEquals(a1, a2); // true
Objects#toString
// 第2引数にデフォルト値を設定するよくあるあれ// 内部的にはString.valueOfを呼んでいるString s1 = Objects.toString("aaa", "null value");assert s1.equals("aaa"); // true
String s2 = Objects.toString(null, "null value");assert s2.equals("null value"); // true
Objects#requireNonNull
void setName(String name) { // 引数のnullチェックしながら代入とか this.name = Objects.requireNonNull(name, "名前は必須");
}
ObjectsShortLong
IntegerCharacter
ByteBooleanCollectionsAssertionErrorInetAddressThrowableProcessBuilderCalendar
#compare
java.lang.Short#compare(short x, short y)
java.lang.Long#compare(long x, long y)
java.lang.Integer#compare(int x, int y)
java.lang.Character#compare(char x, char y)
java.lang.Byte#compare(byte x, byte y)
java.lang.Boolean#compare(boolean x, boolean y)
ADD
// 等しければ0、xのが小さい場合-1以下// xのが大きい場合1以上を返すあれ
ObjectsShortLongIntegerCharacterByteBoolean
CollectionsAssertionErrorInetAddressThrowableProcessBuilderCalendar
Collections
public static <T> Iterator<T> emptyIterator()
public static <T> ListIterator<T> emptyListIterator()
public static <T> Enumeration<T> emptyEnumeration()
ADD
// 自前でIteratorを返すようなとこで使える// Collections.emptyXXX()シリーズが増えたpublic Iterator<E> iterator() { if (data == null) { return Collections.emptyIterator(); } // ...}
ObjectsShortLongIntegerCharacterByteBooleanCollections
AssertionErrorInetAddressThrowableProcessBuilderCalendar
AssertionErrorADD
public AssertionError(String message, Throwable cause)
AssertionError(String, Throwable)
try { Class.forName("だれもいません");
} catch (ClassNotFoundException e) { // try-catchのコンテキストで // プログラムが意図しない // 動作ルートに入ったときが使いどころかな throw new AssertionError("\(^o^)/オワタ", e);
}
ObjectsShortLongIntegerCharacterByteBooleanCollectionsAssertionErrorInetAddressThrowableProcessBuilderCalendar
InetAddress
public static InetAddress getLoopbackAddress()
ADD
InetAddress#getLoopbackAddress
InetAddress a = InetAddress.getLoopbackAddress();
assert a.getHostAddress().equals("127.0.0.1");assert a.getHostName().equals("localhost");assert a.isLoopbackAddress();
ObjectsShortLongIntegerCharacterByteBooleanCollectionsAssertionErrorInetAddressThrowableProcessBuilderCalendar
Throwable
public final synchronized void addSuppressed(Throwable exception)
public final synchronized Throwable[] getSuppressed()
ADD
Throwable#addSuppressedThrowable#getSuppressed// try-with-resourcesのやつで入ったけど// 自分で使ってもおk?try { view.setTimes(attrs.lastModifiedTime(), attrs.lastAccessTime(), attrs.creationTime());} catch (Throwable x) { // rollback try { Files.delete(target); } catch (Throwable suppressed) { x.addSuppressed(suppressed); } throw x;}
ObjectsShortLongIntegerCharacterByteBooleanCollectionsAssertionErrorInetAddressThrowable
ProcessBuilderCalendar
ProcessBuilder
public ProcessBuilder redirectInput(Redirect source)
public ProcessBuilder redirectOutput(Redirect destination)
public ProcessBuilder redirectError(Redirect destination)
public ProcessBuilder redirectInput(File file)
public ProcessBuilder redirectOutput(File file)
public ProcessBuilder redirectError(File file)
public ProcessBuilder redirectErrorStream
(boolean redirectErrorStream)
public ProcessBuilder inheritIO()
public static abstract class Redirect
ADD
// ファイルを入力してファイルに出力する
// md5 input.txt > output.txt のような感じ
ProcessBuilder builder = new ProcessBuilder("md5");
builder.redirectInput(Redirect.from(new File("input.txt")));
builder.redirectOutput(Redirect.to(new File("output.txt")));
Process process = builder.start();
// ...
ObjectsShortLongIntegerCharacterByteBooleanCollectionsAssertionErrorInetAddressThrowableProcessBuilderCalendar
Calendar(GregorianCalendar)
public boolean isWeekDateSupported()
public int getWeeksInWeekYear()
public int getWeekYear()
public void setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
ADD
暦週日付? (week date)
• ISO 8601方式の場合
• 年、週および週日を用いてあらわす日付
• 暦週は、暦年中の序数によって指定される特定の7日の期間で、 月曜日から始まる
• その年の第1週は、最初の木曜日を含む週とすうる
• これは1月4日を含む週に等しい
例: 2000-W30-1
暦週日付 (week date)?
月 火 水 木 金 土 日
27 28 29 30 31 1 2
3 4 5 6 7 8 9
2011年1月
2011年第1週
2010年第52週
ISO 8601方式の場合
Calendar calendar = Calendar.getInstance();
// ISO8601calendar.setFirstDayOfWeek(MONDAY);calendar.setMinimalDaysInFirstWeek(4);
// 2011年の第1週の月曜日calendar.setWeekDate(2011, 1, MONDAY);
assert calendar.get(YEAR) == 2011; // 2011年assert calendar.get(MONTH) == 0; // 1月assert calendar.get(DAY_OF_MONTH) == 3; // 3日
Calendar calendar = Calendar.getInstance();
// ISO8601calendar.setFirstDayOfWeek(MONDAY);calendar.setMinimalDaysInFirstWeek(4);
calendar.set(2011, 0, 2); // 2011年1月2日assert calendar.getWeekYear() == 2010;
calendar.set(2011, 0, 3); // 2011年1月3日assert calendar.getWeekYear() == 2011;
Calendar calendar = Calendar.getInstance();
//ISO8601calendar.setFirstDayOfWeek(MONDAY);calendar.setMinimalDaysInFirstWeek(4);
calendar.set(YEAR, 2011);assert calendar.getWeeksInWeekYear() == 52;
calendar.set(YEAR, 2010);assert calendar.getWeeksInWeekYear() == 52;
calendar.set(YEAR, 2009);assert calendar.getWeeksInWeekYear() == 53;
以上だいぶ地味でしたが...
知っていればちょっとでも
似たようなコードを書かなくて
済むかもしれません!
EnjoyJava SE 7!!
Top Related