cannot find symbol?

Discussion in 'Java' started by qwertmonkey@syberianoutpost.ru, May 4, 2013.

  1. Guest

    Basically I am passing a String array to a method (verify) defined in a
    generic way in an interface in order to create an object of a certain type

    I am checking that the object of the correct type is created but when I try
    to call a method java tells me "cannot find symbol"

    I squinted at it for a while, but can't see what is wrong with it

    What is wrong with this code? How do you fix that problem? Does it relate
    to the use of generic declarations and/or reflection?

    thanks,
    lbrtchx
    comp.lang.java.programmer: cannot find symbol?

    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

    import java.util.Date;

    import java.io.IOException;

    import java.lang.reflect.Method;
    import java.lang.reflect.InvocationTargetException;

    // __ mock/test object
    class IADObj{
    private int d;
    private String aS;
    private Date Dt;
    // __
    IADObj(){}
    // __
    public void setCtxt(int d, String aS, long lTm){
    this.d = d;
    this.aS = aS;
    this.Dt = new Date(lTm);
    }
    // __
    public String toString(){ return("// __ d: |" + d + "|, aS: |" + aS +
    "|, Dt: |" + Dt + "|"); }
    }


    // __
    interface verifiableCLIContext06<T_Ctxt>{
    public boolean verifyCtxt(String[] aSArs, Class<? extends T_Ctxt> TpArgK);
    public T_Ctxt getCtxtDTO();
    }

    // __
    class DTO_T_Ctxt06<T_Ctxt> implements verifiableCLIContext06<T_Ctxt> {
    private T_Ctxt tCtxt; // operating context

    // __
    DTO_T_Ctxt06(){ System.err.println("// __ object created: |" +
    getTimeStamp() + "|"); }

    // __
    private String getTimeStamp(){ return((new Date()).toString()); }

    // __
    public boolean verifyCtxt(String[] aSAr, Class<? extends T_Ctxt> TpArgK){
    int iArSz= Integer.MIN_VALUE;
    boolean Is = ((aSAr != null) && ((iArSz = aSAr.length) > 0));
    if(Is){
    for(int i = 0; (i < iArSz); ++i){
    System.err.println("// __ aSAr[" + i + "]: |" + aSAr + "|");
    }
    // __
    try{
    tCtxt = (T_Ctxt)TpArgK.newInstance();

    System.err.println("// __ tCtxt.getClass(): |" + tCtxt.getClass() + "|");

    /*
    tCtxt.setCtxt((new Integer(aSAr[0])).intValue(), aSAr[1],
    (new Long(aSAr[0])).longValue());

    cannot find symbol
    symbol : method setCtxt(int,java.lang.String,long)
    location: class java.lang.Object
    tCtxt.setCtxt((new Integer(aSAr[0])).intValue(), aSAr[1],
    (new Long(aSAr[0])).longValue());
    ^
    */

    }catch(InstantiationException InstX){ InstX.printStackTrace(System.err); }
    catch(IllegalAccessException IlglAxX){ IlglAxX.printStackTrace(); }
    }// (Is)
    // __
    return(Is);
    }

    // __
    public T_Ctxt getCtxtDTO(){ return(tCtxt); }
    }

    // __
    public class DTO_T_Ctxt06Test{

    public static void main(String[] args) {
    IADObj IAD = new IADObj();
    String[] aSAr = new String[]{"37", "abc", (new Date()).toString()};

    DTO_T_Ctxt06<IADObj> DTO_T_Ctxt06 = new DTO_T_Ctxt06<IADObj>();

    DTO_T_Ctxt06.verifyCtxt(aSAr, IAD.getClass());
    }
    }
    // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
    , May 4, 2013
    #1
    1. Advertising

  2. Daniel Pitts Guest

    On 5/3/13 9:01 PM, wrote:
    > Basically I am passing a String array to a method (verify) defined in a
    > generic way in an interface in order to create an object of a certain type
    >
    > I am checking that the object of the correct type is created but when I try
    > to call a method java tells me "cannot find symbol"
    >
    > I squinted at it for a while, but can't see what is wrong with it
    >
    > What is wrong with this code? How do you fix that problem? Does it relate
    > to the use of generic declarations and/or reflection?
    >
    > thanks,
    > lbrtchx
    > comp.lang.java.programmer: cannot find symbol?
    >
    > // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
    >
    > import java.util.Date;
    >
    > import java.io.IOException;
    >
    > import java.lang.reflect.Method;
    > import java.lang.reflect.InvocationTargetException;
    >
    > // __ mock/test object
    > class IADObj{
    > private int d;
    > private String aS;
    > private Date Dt;
    > // __
    > IADObj(){}
    > // __
    > public void setCtxt(int d, String aS, long lTm){
    > this.d = d;
    > this.aS = aS;
    > this.Dt = new Date(lTm);
    > }
    > // __
    > public String toString(){ return("// __ d: |" + d + "|, aS: |" + aS +
    > "|, Dt: |" + Dt + "|"); }
    > }
    >
    >
    > // __
    > interface verifiableCLIContext06<T_Ctxt>{
    > public boolean verifyCtxt(String[] aSArs, Class<? extends T_Ctxt> TpArgK);
    > public T_Ctxt getCtxtDTO();
    > }
    >
    > // __
    > class DTO_T_Ctxt06<T_Ctxt> implements verifiableCLIContext06<T_Ctxt> {
    > private T_Ctxt tCtxt; // operating context
    >
    > // __
    > DTO_T_Ctxt06(){ System.err.println("// __ object created: |" +
    > getTimeStamp() + "|"); }
    >
    > // __
    > private String getTimeStamp(){ return((new Date()).toString()); }
    >
    > // __
    > public boolean verifyCtxt(String[] aSAr, Class<? extends T_Ctxt> TpArgK){
    > int iArSz= Integer.MIN_VALUE;
    > boolean Is = ((aSAr != null) && ((iArSz = aSAr.length) > 0));
    > if(Is){
    > for(int i = 0; (i < iArSz); ++i){
    > System.err.println("// __ aSAr[" + i + "]: |" + aSAr + "|");
    > }
    > // __
    > try{
    > tCtxt = (T_Ctxt)TpArgK.newInstance();
    >
    > System.err.println("// __ tCtxt.getClass(): |" + tCtxt.getClass() + "|");
    >
    > /*
    > tCtxt.setCtxt((new Integer(aSAr[0])).intValue(), aSAr[1],
    > (new Long(aSAr[0])).longValue());
    >
    > cannot find symbol
    > symbol : method setCtxt(int,java.lang.String,long)
    > location: class java.lang.Object
    > tCtxt.setCtxt((new Integer(aSAr[0])).intValue(), aSAr[1],
    > (new Long(aSAr[0])).longValue());
    > ^
    > */
    >
    > }catch(InstantiationException InstX){ InstX.printStackTrace(System.err); }
    > catch(IllegalAccessException IlglAxX){ IlglAxX.printStackTrace(); }
    > }// (Is)
    > // __
    > return(Is);
    > }
    >
    > // __
    > public T_Ctxt getCtxtDTO(){ return(tCtxt); }
    > }
    >
    > // __
    > public class DTO_T_Ctxt06Test{
    >
    > public static void main(String[] args) {
    > IADObj IAD = new IADObj();
    > String[] aSAr = new String[]{"37", "abc", (new Date()).toString()};
    >
    > DTO_T_Ctxt06<IADObj> DTO_T_Ctxt06 = new DTO_T_Ctxt06<IADObj>();
    >
    > DTO_T_Ctxt06.verifyCtxt(aSAr, IAD.getClass());
    > }
    > }
    > // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
    >



    Try reducing your problem to an SSCCE <http://sscce.org>. It is
    difficult to follow those poorly named mock classes and interfaces.

    On an unrelated note, what the hell convention is that? DTO? T_? Hell,
    underscores in class names? This looks like it was copied from C++ code
    which was copied from C code.

    Actually, now that I say that, are you expecting generics to work like
    templates in C++? They don't.

    The DTO_T_Ctxt06 object (which has the same name as the class, bad and
    confusing) only knows about the "?". It doesn't know about the specific
    subclass you've chosen.

    What you want is an interface.

    public interface ContextAware {
    void setContext(int data, String string, long time);
    }

    public class Adjective implements ContextAware {
    private int data;
    private String string;
    private Date date;
    public void setContext(int data, String string, long time) {
    this.data = data;
    this.string = string;
    this.date = new Date(time);
    }
    }

    public class ContextVerifier {
    public verifyContext(String[] strings, ContextAware target) {
    target.setContext(
    Integer.parseInt(strings[0]),
    strings[1],
    Long.parseLong(strings[2]);
    }
    }


    public class Test {
    public static void main(String...args) {
    final String[] args = {
    "37",
    "abc",
    String.valueOf(System.currentTimeMillies())
    };

    final ContextVerifier cv = new ContextVerifier();
    cv.verifyContext(args, new Adjective();
    }
    }

    Well, would you look at that. You no longer have to deal with Class
    tokens, instantiation, exceptions, or generics! A much cleaner program.
    Untested, but the main concept should be clear.

    Hope this helps,
    Daniel.
    Daniel Pitts, May 4, 2013
    #2
    1. Advertising

  3. Joerg Meier Guest

    On Sat, 04 May 2013 09:16:41 +0100, lipska the kat wrote:

    > On 04/05/13 05:01, wrote:
    >> What is wrong with this code?

    > Firstly, looking at this code gave me a headache :-(


    qwertmonkey has been told many times, but like Stefan Ram, he ignores all
    posts relating to his horrid coding style, and since people still help him,
    he probably just sees no need.

    Liebe Gruesse,
    Joerg

    --
    Ich lese meine Emails nicht, replies to Email bleiben also leider
    ungelesen.
    Joerg Meier, May 4, 2013
    #3
  4. Eric Sosman Guest

    On 5/4/2013 8:49 AM, Joerg Meier wrote:
    > On Sat, 04 May 2013 09:16:41 +0100, lipska the kat wrote:
    >
    >> On 04/05/13 05:01, wrote:
    >>> What is wrong with this code?

    >> Firstly, looking at this code gave me a headache :-(

    >
    > qwertmonkey has been told many times, but like Stefan Ram, he ignores all
    > posts relating to his horrid coding style, and since people still help him,
    > he probably just sees no need.


    What he may not know is that while some people help him,
    others don't. I, for example, started to read his code but
    found it so gratuitously ugly that after half a minute I said
    "Ick" and quit. Whatever help he might have gotten from me
    will forever remain a mystery, because I've got better things
    to do. My eyebrows don't pluck themselves, you know.

    --
    Eric Sosman
    d
    Eric Sosman, May 4, 2013
    #4
  5. Stefan Ram Guest

    writes:
    >location: class java.lang.Object
    > tCtxt.setCtxt((new Integer(aSAr[0])).intValue(), aSAr[1],
    >(new Long(aSAr[0])).longValue());
    > ^


    Go ahead and look at the declaration of »tCtxt«.

    You will find the that it effectively was declared as
    »java.lang.Object«.

    »java.lang.Object« has no method name »setCtxt«.
    Stefan Ram, May 4, 2013
    #5
  6. Stefan Ram Guest

    writes:
    >class DTO_T_Ctxt06<T_Ctxt> implements verifiableCLIContext06<T_Ctxt> {
    > private T_Ctxt tCtxt; // operating context
    > System.err.println("// __ tCtxt.getClass(): |" + tCtxt.getClass() + "|");


    It boils down to this.

    »T_Ctxt« is effectively »java.lang.Object«, since the
    compiler does not know a more specific type to apply.
    Stefan Ram, May 4, 2013
    #6
  7. Arne Vajhøj Guest

    On 5/4/2013 8:49 AM, Joerg Meier wrote:
    > On Sat, 04 May 2013 09:16:41 +0100, lipska the kat wrote:
    >
    >> On 04/05/13 05:01, wrote:
    >>> What is wrong with this code?

    >> Firstly, looking at this code gave me a headache :-(

    >
    > qwertmonkey has been told many times, but like Stefan Ram, he ignores all
    > posts relating to his horrid coding style, and since people still help him,
    > he probably just sees no need.


    I see some difference.

    This is coding C++ in Java. Both design and formatting. And this
    is pretty bad - as it almost always is to try and code X in Y.

    Stefans code is normal designed. The only problem is that
    it it gets formatted after the "Stefan Java coding convention",
    which deviate a lot from more standard Java coding conventions
    including the official one from SUN/Oracle.

    That is also a annoying, but not quite as much.

    (and I don't understand why he doesn't write the code
    in his style but 15 seconds before posting copy paste
    it over in a new doc, ask the IDE to reformat it and
    post the result)

    Arne
    Arne Vajhøj, May 5, 2013
    #7
  8. markspace Guest

    On 5/4/2013 6:31 PM, Arne Vajhøj wrote:
    > (and I don't understand why he doesn't write the code
    > in his style but 15 seconds before posting copy paste
    > it over in a new doc, ask the IDE to reformat it and
    > post the result)


    I have two different coding styles that my editor (NetBeans) supports.
    One with more white space which is normal, and one with less white space
    for posting. It's easy to switch between them. (Well, currently I have
    to switch projects to do that, but that's not a burden usually.)

    I don't see why code can't be formatted for its intended audience either.
    markspace, May 5, 2013
    #8
  9. On 04.05.2013 14:49, Joerg Meier wrote:
    > On Sat, 04 May 2013 09:16:41 +0100, lipska the kat wrote:
    >
    >> On 04/05/13 05:01, wrote:
    >>> What is wrong with this code?

    >> Firstly, looking at this code gave me a headache :-(

    >
    > qwertmonkey has been told many times, but like Stefan Ram, he ignores all
    > posts relating to his horrid coding style, and since people still help him,
    > he probably just sees no need.


    What I find probably more annoying is his ripping apart of threads.
    With such high traffic as here it becomes quite tedious quickly to dig
    up all the branches of a single thread.

    Cheers

    robert


    --
    remember.guy do |as, often| as.you_can - without end
    http://blog.rubybestpractices.com/
    Robert Klemme, May 5, 2013
    #9
  10. On 05/04/2013 10:14 AM, Eric Sosman wrote:
    > On 5/4/2013 8:49 AM, Joerg Meier wrote:
    >> On Sat, 04 May 2013 09:16:41 +0100, lipska the kat wrote:
    >>
    >>> On 04/05/13 05:01, wrote:
    >>>> What is wrong with this code?
    >>> Firstly, looking at this code gave me a headache :-(

    >>
    >> qwertmonkey has been told many times, but like Stefan Ram, he ignores all
    >> posts relating to his horrid coding style, and since people still help
    >> him,
    >> he probably just sees no need.

    >
    > What he may not know is that while some people help him,
    > others don't. I, for example, started to read his code but
    > found it so gratuitously ugly that after half a minute I said
    > "Ick" and quit. Whatever help he might have gotten from me
    > will forever remain a mystery, because I've got better things
    > to do. My eyebrows don't pluck themselves, you know.
    >

    You lasted 30 seconds, Eric? :)

    The first thing I do with a NG problem that involves code is very
    quickly scan it for readability, w/o even trying to understand the code
    proper. So whitespace, indentation, general naming etc. In this case I
    gave up in less than 10 seconds and read follow-ups to see if anyone
    actually tried to help. :)

    AHS
    Arved Sandstrom, May 6, 2013
    #10
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Danny
    Replies:
    1
    Views:
    4,671
    Andrew Thompson
    May 26, 2004
  2. Replies:
    5
    Views:
    6,551
    Tilman Bohn
    Dec 16, 2004
  3. luch
    Replies:
    5
    Views:
    6,344
  4. fybar

    cannot find symbol

    fybar, Apr 25, 2006, in forum: Java
    Replies:
    6
    Views:
    9,240
    Oliver Wong
    Apr 25, 2006
  5. Replies:
    6
    Views:
    1,767
Loading...

Share This Page