classpath
[Top][All Lists]
Advanced

[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 (_);
      }
  }
}



reply via email to

[Prev in Thread] Current Thread [Next in Thread]