Changeset 4691


Ignore:
Timestamp:
11/11/03 11:11:38 (18 years ago)
Author:
asimon
Message:

JFIELD and JSTATIC use forClassRef to get classes from class-refs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/Java.java

    r4690 r4691  
    33 *
    44 * Copyright (C) 2002-2003 Peter Graves
    5  * $Id: Java.java,v 1.22 2003-11-11 09:44:08 asimon Exp $
     5 * $Id: Java.java,v 1.23 2003-11-11 11:11:38 asimon Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    8181            if (args.length < 2 || args.length > 4)
    8282                throw new ConditionThrowable(new WrongNumberOfArgumentsException(this));
    83             String fieldName, className = null;
     83            String fieldName = null;
    8484            Class c;
    8585            Field f;
     
    8989                    // Cases 1-5.
    9090                    fieldName = LispString.getValue(args[1]);
    91                     if (args[0] instanceof LispString) {
    92                       className = LispString.getValue(args[0]);
    93                       c = Class.forName(className);
    94                     }
    95                     else {
    96                       c = (Class)JavaObject.getObject(args[0]);
    97                       className = c.getName();
    98                     }
     91        c = forClassRef(args[0]);
    9992                } else {
    10093                    // Cases 6 and 7.
     
    10295                    instance = JavaObject.getObject(args[1]);
    10396                    c = instance.getClass();
    104                     className = c.getName(); //needed only for the error message
    10597                }
    10698                f = c.getField(fieldName);
     
    141133            catch (ClassNotFoundException e) {
    142134                throw new ConditionThrowable(new LispError("class not found: " +
    143                                                            className));
     135                                                           e.getMessage()));
    144136            }
    145137            catch (NoSuchFieldException e) {
     
    269261                        m = (Method) obj;
    270262                } else if (methodRef instanceof LispString) {
    271                     Class c = null;
    272                     LispObject classRef = args[1];
    273                     if (classRef instanceof JavaObject) {
    274                         Object obj = ((JavaObject)classRef).getObject();
    275                         if (obj instanceof Class)
    276                             c = (Class) obj;
    277                     } else if (classRef instanceof LispString) {
    278                         c = Class.forName(LispString.getValue(classRef));
    279                     }
     263                    Class c = forClassRef(args[1]);
    280264                    if (c != null) {
    281265                        String methodName = LispString.getValue(methodRef);
Note: See TracChangeset for help on using the changeset viewer.