1 /* 2 * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 20 * CA 95054 USA or visit www.sun.com if you need additional information or 21 * have any questions. 22 */ 23 24 /* @test 25 * @bug 4838379 26 * @summary Verify that serialVersionUID and serialPersistentFields 27 * declarations made by enum types and constants are ignored. 28 */ 29 30 import java.io.*; 31 import java.util.Arrays; 32 33 enum Foo { 34 35 foo, 36 bar { 37 private static final long serialVersionUID = 2L; 38 // bar is implemented as an inner class instance, so the following 39 // declaration would cause a compile-time error 40 // private static final ObjectStreamField[] serialPersistentFields = { 41 // new ObjectStreamField("gub", Float.TYPE) 42 // }; 43 }; 44 45 private static final long serialVersionUID = 1L; 46 private static final ObjectStreamField[] serialPersistentFields = { 47 new ObjectStreamField("blargh", Integer.TYPE) 48 }; 49 } 50 51 public class Test { 52 public static void main(String[] args) throws Exception { 53 Class[] classes = 54 { Foo.class, Foo.foo.getClass(), Foo.bar.getClass() }; 55 for (int i = 0; i < classes.length; i++) { 56 ObjectStreamClass desc = ObjectStreamClass.lookup(classes[i]); 57 if (desc.getSerialVersionUID() != 0L) { 58 throw new Error( 59 classes[i] + " has non-zero serialVersionUID: " + 60 desc.getSerialVersionUID()); 61 } 62 ObjectStreamField[] fields = desc.getFields(); 63 if (fields.length > 0) { 64 throw new Error( 65 classes[i] + " has non-empty list of fields: " + 66 Arrays.asList(fields)); 67 } 68 } 69 } 70 }