Project Coinより小さなCoin

Post on 15-Jan-2015

3144 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

Transcript

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