Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > cannot find symbol?

Reply
Thread Tools

cannot find symbol?

 
 
qwertmonkey@syberianoutpost.ru
Guest
Posts: n/a
 
      05-04-2013
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[i] + "|");
}
// __
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());
}
}
// ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
 
Reply With Quote
 
 
 
 
Daniel Pitts
Guest
Posts: n/a
 
      05-04-2013
On 5/3/13 9:01 PM, http://www.velocityreviews.com/forums/(E-Mail Removed) 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[i] + "|");
> }
> // __
> 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.
 
Reply With Quote
 
 
 
 
Joerg Meier
Guest
Posts: n/a
 
      05-04-2013
On Sat, 04 May 2013 09:16:41 +0100, lipska the kat wrote:

> On 04/05/13 05:01, (E-Mail Removed) 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.
 
Reply With Quote
 
Eric Sosman
Guest
Posts: n/a
 
      05-04-2013
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, (E-Mail Removed) 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
(E-Mail Removed)d
 
Reply With Quote
 
Stefan Ram
Guest
Posts: n/a
 
      05-04-2013
(E-Mail Removed) 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«.

 
Reply With Quote
 
Stefan Ram
Guest
Posts: n/a
 
      05-04-2013
(E-Mail Removed) 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.

 
Reply With Quote
 
Arne Vajhřj
Guest
Posts: n/a
 
      05-05-2013
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, (E-Mail Removed) 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


 
Reply With Quote
 
markspace
Guest
Posts: n/a
 
      05-05-2013
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.


 
Reply With Quote
 
Robert Klemme
Guest
Posts: n/a
 
      05-05-2013
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, (E-Mail Removed) 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/
 
Reply With Quote
 
Arved Sandstrom
Guest
Posts: n/a
 
      05-06-2013
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, (E-Mail Removed) 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
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to exclude action of Find::Find::find in subdirectories withknown names? vdvorkin Perl Misc 3 02-14-2011 05:28 AM
How to exclude action of Find::Find::find in subdirectories withknown names? vdvorkin Perl Misc 0 02-10-2011 05:18 PM
Cannot upgrade Google Earth cannot find {18D3ED9E-183C-4C00-B333-FB0C2FAE8B0F} joewo Computer Support 3 10-09-2007 05:23 AM
Find.find does not find orphaned links? Wybo Dekker Ruby 1 11-15-2005 02:50 PM
Browser cannot find any server anymore after 5 minutes of normal activity (" The page cannot be displayed ") reply@newsgroup.please Computer Support 6 01-05-2004 04:03 AM



Advertisments