Hi,

I'm trying to create a class, instances of which need to access protected 
fields of the superclass's superclass. But, I am failing so far. Is this a 
bug or am I doing something wrong:
java:

package com.example;

public class Example {

    protected static String PROTECTED_FIELD = "this is a field";

    public void asdf() { }
}

clojure:

(ns test.example
 (:import (com.example Example)))

(gen-class
  :name test.Example
  :extends com.example.Example
  :main false
  :exposes {PROTECTED_FIELD {:get getProtectedField :set setProtectedField}}
  :methods [[fieldInfo [] void]])

(defn -fieldInfo [this]
  (println (.getProtectedField this)))

java:

Example e = new Example();
e.fieldInfo();

results in:

Exception in thread "main" java.lang.IllegalArgumentException: No matching 
field found: getProtectedField for class test.Example
    at clojure.lang.Reflector.getInstanceField(Reflector.java:271)
    at clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:300)
    at test.example$_fieldInfo.invoke(example.clj:16)
    at test.Example.fieldInfo(Unknown Source)
    at tests.Tests.main(Tests.java:47)

Oddly also, this:

      System.out.println(e.getProtectedField());

prints the field.

I've tried numerous variations on this.

Do you have any ideas before I file a bug? (aside from make a wrapper 
class).


-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to