[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Undocumented values of documented final fields
From: |
Tom Tromey |
Subject: |
Re: Undocumented values of documented final fields |
Date: |
09 Feb 2002 10:18:05 -0700 |
>>>>> "arenn" == arenn <address@hidden> writes:
>> does Classpath aim to provide the same values for final fields as the Sun
>> JDK implementation does, even if the concrete value is not part of the
>> specification?
This is required. Otherwise the "write once run anywhere" feature of
Java is compromised.
arenn> In short, yes. I've captured these values in the past by
arenn> writing short programs that dump them to stdout.
In libgcj we have a simple program that uses reflection to print
integer values. I've appended this. This can be really useful when
you have a lot of such constants.
Tom
// Show a value given class name and constant name.
/* Copyright (C) 2000 Free Software Foundation
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
/* Written by Tom Tromey <address@hidden>. */
// Use like this to print a `static final' value (integers only, not
// strings yet):
// java showval java.awt.geom.AffineTransform.TYPE_IDENTITY
// Prints result like:
// TYPE_IDENTITY = 0
// In conjunction with a keyboard macro you can do a number of
// constants very easily.
import java.lang.reflect.*;
public class showval
{
public static void main (String[] args)
{
int ch = args[0].lastIndexOf ('.');
String className = args[0].substring (0, ch);
String constName = args[0].substring (ch + 1);
try
{
Class klass = Class.forName (className);
Field field = klass.getField (constName);
System.out.println (constName + " = " + field.getInt (null));
}
catch (Throwable _)
{
System.out.println (_);
}
}
}