测试给定的对象是否为不可变的。
import java.math.BigDecimal;/**来 自 时代Java**/ import java.math.BigInteger; import java.util.*; import java.util.function.Function; import java.util.function.Predicate; public class Main{ public static void main(String[] argv) throws Exception{ Object object = "nowjava.com"; System.out.println(isImmutable(object)); } private static final Set<Class> IMMUTABLE_CLASSES = Collections .unmodifiableSet(new HashSet<Class>(Arrays.asList( Boolean.class, Byte.class, Short.class, Integer.class,/* from 时 代 J a v a - nowjava.com*/ Long.class, Float.class, Double.class, Class.class, BigInteger.class, BigDecimal.class, Currency.class))); /** /** * Tests if the given object is Immutable. An object is considered Immutable either: <ol> * <li>One of the following * classes in the Standard Java Library: .</li> * <li>Marked with the org.paritybits.pantheon.common.Immutable<li> annotation. * @param object The object under test. * @return True if immutable * @throws NullPointerException If object is null. */ public static boolean isImmutable(final Object object) { Class objClass = object.getClass(); return IMMUTABLE_CLASSES.contains(objClass) || objClass.isAnnotationPresent(Immutable.class) || objClass.isAnnotationPresent(Idempotent.class); } /** * Allows a contains test to be made for any type of Iterable object. If the iterable object * is a collection the contains method will be used, otherwise a naive iteration over * all the items will be used. * * @param iterable The iterable object that could contain the element * @param o element whose presence in this collection is to be tested. * @param <T> The type of object being used. * @return True if item was returned by the iterator. * @throws NullPointerException if iterable or item are null. */ public