| hashCode and equals (again) |
|
 |
Index ‹ java-programmer
|
- Previous
- 4
- JSP Code Review Tool or Syntax Analyzer?We use an automated Java source code review tool (Hammurpai) in our
company. It does the job. However, we write a substantial amout of JSP
code for web and voice applications. The Java code review tool says it
will also handle JSP, but you need to run it through Jasper first to
turn it in to *.java files. I've been searching all over, but can't
find what I need. I want to take a directory and sub-directories of
*.jsp files and run them through an automated tool that checks for
syntax, parameter naming conventions, closed attribute quotes, closing
tags, ample whitespace, quantity of comments, etc. I want it to show
the violations so the code can be fixed before being bundled and
deployed, only to find out later that it has a problem compiling
because of a missing closing quote. Does anything like this exist out
there?
- 5
- need help with jar archivHi,
I need some help with my jar archive.
I need to read a file in my program. I do that with
FileReader.
To locate the file I use getClass().getResource("key/key.txt")
I used the above class.getResource so that teh programme locates the file
in the jar archive. But it doesn't work after getting packed in
jar, otherwise works perfectly alright.
I use the following command to make the jar:
jar cmf caesar/mainClass cipher.jar caesar/c*.class caesar/key/key.txt
Can somebody please help me with that.
I get a error-message as follows
file:\E:\myprogs\Security\cipher.jar!\caesar\key\key.txt ( The syntax for
the filename,
directory and data volume is wrong)
The relevant code lines:
URL fileUrl = getClass().getResource("key/key.txt");
// String filename = fileUrl.getFile();
System.out.println(fileUrl.getFile());
try {
System.out.println(fileUrl.getFile());
BufferedReader read =
new BufferedReader
(new FileReader(fileUrl.getFile()));
Regards,
Sunil
- 5
- newbie to javahello,
In following code there is a abstract class so i am not allowed to
create instance of class.
so Figure f = new Figure(10, 10); is wrong but why following statement
is valid?
Figure figref;
CLASS CODE =>
abstract class Figure {
double dim1;
double dim2;
Figure(double a, double b) {
dim1 = a;
dim2 = b;
}
abstract double area();
}
- 5
- Orion - need to add customer parameterHi,
I have a large application which I need to split into 2 and put on
different servers because the applicaiton is becoming too big.
What I need is to add in a parameter which tells me if its Application
A or Application B.
Both applications will have the same code. The only difference is that
when you log onto the system it will some how read the parameter to let
it know which Application it should be and then it will display the
relevant menus. So if the parameter in one of the Orion says 'AppA'
then it will display Application A's menus and vica-versa for
Application B.
Can someone tell me which place is the best to place this parameter?
(e.g. application.xml)??
Also how would I read this parameter?
Please give example if possible.
Thanks
Simon
- 6
- How can i get the the data come from severlet?Hi,
That's the suituation.
There's a website using servlet to provide some information i need. I
can only get the html they provide for me. Their data will be update
every minite, but i can not stare at it and push "reload" button to get
the new data.
How can i get the data using a Java class from the website
automatically per minite without do the tedious work above.
Any idea?
- 6
- PrintStream to Writer"karl wettin" wrote:
>
> Java programmers,
>
> I've wrote this software that prints output to a PrintStream (usually
> System.err), but from time to time I would like to send the output to
> a Writer (ServletResponse.getWriter()) instead.
Change your logic. Write your software so that it always writes using a
Writer. In case you need to write to an OutputStream, use an
OutputStreamWriter.
Writers are newer than OutputStreams (added in Java 1.1). Because of
this, Writers know about OutputStreams, but OutputStreams don't know
anything about Writers. So the only bridge between them is a Writer
(OutputStreamWriter) that knows about an output stream.
> {
// > PrintStream out=System.err;
Writer out = OutputStreamWriter(System.err);
>
> void someMethod(ServletResponse reponse)
> {
// > this.out = new SomeStreamWriterWrapper(response.getWriter());
this.out = response.getWriter();
> }
> }
- 7
- searching for encrypted fields in data columnsI am new to database programming and was curious how others solve the
problem of storing encrypted in data in db table columns and then
subsequently searching for these records.
The particular problem that I am facing is in dealing with (privacy)
critical information like credit-card #s and SSNs or business critical
information like sales opportunity size or revenue in the database. The
requirement is that this data be stored encrypted (and not in the
clear). Just limiting access to tables with this data isn't sufficient.
Does any database provide native facilities to store specific columns as
encrypted data ? The other option I have is to use something like RC4 to
encrypt the data before storing them in the database.
However, the subsequent problem is how do I search/sort on these columns
? Its not a big deal if I have a few hundred records; I could
potentially retrieve all the records, decrypt the specific fields and
then do in process searches/sorts. But what happens when I have (say) a
million records - I really don't want to suck in all that data and work
on it but instead use the native db search/sort capabilities.
Any suggestions and past experiences would be greatly appreciated.
much thanks,
~s
- 8
- Multiline Textbox For Web pageHello,
I have been trying to get a textbox to work now for over a week, and
am starting to think there is not answer. I have a web application
that populates an htmlinputtextarea. The reason I chose it was
because it could display multiple lines. However, if the report gets
too wide for the textbox, the text starts to wrap. I have tried
override and white-space for CSS class, but the best I can get is one
long line (white-space: nowrap). For the setValue, I use \r\n for my
end of line. Example: txtBox.setValue("This is one line\r\nThis is
line two.");
Is there a better textbox than the htmlinputtextarea to display
multiple lines of text with a vertical and horizontal scrollbar? If
not anybody know what I am doing wrong?
Thanks for any help
Ryan
- 8
- Creating EJB Instance on server startupHi,
I programmed a stateless SessionBean that acts as a timer service
(implements TimeObject). Since this timer service should be available
after the server has started, I am looking for a way to realize this. I
thought about creating a pool, where at least one instance is residing
in so I configured in my jboss.xml:
<container-configuration extends="Standard Stateless SessionBean">
<container-name>Pooled Stateless SessionBean</container-name>
<instance-pool>org.jboss.ejb.plugins.StatelessSessionInstancePool</instance-pool>
<container-pool-conf>
<MinimumSize>1</MinimumSize>
<MaximumSize>1</MaximumSize>
<strictMaximumSize>1</strictMaximumSize>
</container-pool-conf>
</container-configuration>
But this doesn't bring the expected result. I realized, that the
ejbCreate method of my session bean is called as recently as I am
calling a custom method of my remote interface. So my container isn't
creating any bean instance at all at the startup. What can I do now ?
Thanx,
Phil.
- 9
- 11
- trying to extend messageresources classhi..
i'm trying to create my own messageresources class and placed:
<init-param>
<param-name>application</param-name>
<param-value>coreservlets.Messages</param-value>
</init-param>
<init-param>
<param-name>factory</param-name>
<param-value>coreservlets.MessageFactory</param-value>
</init-param>
in the web.xml file of the context, but struts, ignores it and keeps
using it's own.
- 12
- Images from Jar Files? - How do YOU do it?
It occurs to me that this may be the best way to approach this situation:
If you have a stand-alone java application that runs from a JAR file,
and you have images contained in that JAR file that your application
loads... how do YOU do it?
I'm specifically interested in Jar Bundled applications for OSX, but any
code will do.
If anyone could provide sample code, it would be very much appreciated!
CT
- 12
- Instantiating a class read in from user inputI am trying to write a simple application that will instantiate a class
whose name is read in from user input. Since the name of the class is being
read in as a String, how can it be instantiated? For example, suppose I
store the name of the user supplied class in a String variable called
ClassName. I can't simple just instantiate the class with a statement such
as new ClassName(), since ClassName is a String. Any advice?
- 12
- pico, nano, micro and JavaFirst off, this is for a school assignment... I know some people get
squeamish about this sort of post, but I'm kind of up a creek.
Basically, as part of a semester-long project, we need to add another bean
to a program we've been working on, and integrate it with the rest of the
program. That part's not the issue.
Part of the specification for the bean states tnat the user must be able to
select (and optionally enter) values ranging from 100 picofarads up to 1
microfarad. That's 1 * 10^-10 up to 1 * 10^-6, and everything in between.
Now... For ease of use purposes, the input is supposed to involve something
like a combobox or a spinner or a slider, or something like that, with
clearly delineated default values, which the user can then customise.
So, for testing purposes, I have a combobox containing the numbers 1 to 10,
and a second combobox that allows you to select your unit (pF, nF, uF).
So... In an attempt to get this post over with... Does Java include a
quick and easy way of taking an entry like "250 nF" and converting it to
2.5*10^-7 for calculation purposes? I was thinking of putting the whole
thing into a switch based on the contents of the units box (or possibly a
bunch of if statements), but then there's the problem of a certain amount of
variation in the multipliers used depending on the actual number entered.
Does any of this make sense?
- 12
- When to synchronize a listHi,
I wanted to know when should I synchronize a list. No, this is not the
old question regarding ArrayList Vs Vector. My doubts are more related
to synchronization ( whether a plain ArrayList or synchronized
Arraylist or Vector)
The common answer I find is that Vector or synchronizedList( new
ArrayList ) should be used when two or more threads are accessing the
contents of the List.
For example, consider following code in a Java class.
Vector vec = new Vector();
for (int i = 0; i < somenumber; i++)
{
//do something
vec.add(new Integer(i));
//do more
}
My thought is that whether you use any list, you still would have to
make the loop synchronized. Even if a vector or synchronized ArrayList
is used, another piece of code might just come in and modify that
vector (not run that loop, but just want to modify vec ) before the for
loop comes back again to that place. This is because, synchronized list
means when one thread is updating, another cannot. But if the first
thread is not updating, other freely can. This might create
inconsistent data in the List.
As far as I understand, the synchronization in the Vector is on the
instance itself. So before calling any method on the Vector instance, a
lock is obtained by runtime. Once method execution is over, the lock is
available to any other thread.
This is more possible in Servlets or JSP. ( EJB , I do not think so,
because, a separate instance is assigned to each thread calling a
method in the EJB ).
Another example, would be using a List as a member inside a singleton
class. If two threads request the instance of the singleton, both will
get the reference to the same instance of the class. Say the second
thread gets an index and has to retrieve the object at that index
position in the list, while the first thread is updating the vector. It
might turn out that the value retreived by the second thread might not
be what it expected. So I would anyway have to synchronize the methods
in the singleton, to get a lock on that instance before attempting to
call any method on that instance.
When would I use a List and when would I use synchronized List. Does it
really make any difference whether I use Vector or ArrayList when I
have to synchronize all access to the List. Please give any example to
help me understand the situation.
I have searched google and also I have searched previous posts. I could
not find the answer to this specific question so I am posting this. I
did find lot of stuff related to ArrayList Vs Vector, and which is
better , but not related to synchronization and Lists.
Thanks.
|
| Author |
Message |
Todd

|
Posted: 2008-4-9 22:51:00 |
Top |
java-programmer, hashCode and equals (again)
Hello,
I have spent a great deal of time reading through the postings in this
group as well as tutorials/explanations on sites elsewhere (i.e.,
Roedy's, etc.), but have not been able to get a good grasp of hashCode
and equals. I understand most of the rules for hashCode are defined
for use of objects in maps and other comparable collections, so it is
from that POV that I am trying to get a good grasp of the concepts.
Please help if you can - especially the SCCE later.
1. Originally, I thought that it made sense to make an equals method
that uses hashCode as its criteria for equality. However, as I now
understand hashCode, the code _must_ be the same for equal objects,
BUT it is _possible_ to be the same for non-equal objects. Am I
stating this correctly?
2. When would one use a set of criteria to determine equality that is
different from the criteria used to generate a hashCode?
3. Why aren't the hashCode_s in the following code the same?
package hashcode;
public class Main
{
public static void main(String[] args)
{
int[] a = { 1, 7, 0, 0 };
int[] b = { 1, 7, 0, 0 };
System.out.println( "equals: " + a.equals( b ) );
System.out.println( "hash a: " + a.hashCode() );
System.out.println( "hash b: " + b.hashCode() );
Integer[] c = { 1, 7, 0, 0 };
Integer[] d = { 1, 7, 0, 0 };
System.out.println( "equals: " + c.equals( d ) );
System.out.println( "hash c: " + c.hashCode() );
System.out.println( "hash d: " + d.hashCode() );
int[] e = a.clone();
Integer[] f = c.clone();
System.out.println( "equals: " + a.equals( e ) );
System.out.println( "hash a: " + a.hashCode() );
System.out.println( "hash e: " + e.hashCode() );
System.out.println( "equals: " + c.equals( f ) );
System.out.println( "hash c: " + c.hashCode() );
System.out.println( "hash f: " + f.hashCode() );
}
}
Thanks,
Todd
|
| |
|
| |
 |
Todd

|
Posted: 2008-4-9 23:02:00 |
Top |
java-programmer >> hashCode and equals (again)
On Apr 9, 7:51 am, Todd <email***@***.com> wrote:
> Hello,
>
> I have spent a great deal of time reading through the postings in this
> group as well as tutorials/explanations on sites elsewhere (i.e.,
> Roedy's, etc.), but have not been able to get a good grasp of hashCode
> and equals. I understand most of the rules for hashCode are defined
> for use of objects in maps and other comparable collections, so it is
> from that POV that I am trying to get a good grasp of the concepts.
>
> Please help if you can - especially the SCCE later.
>
> 1. Originally, I thought that it made sense to make an equals method
> that uses hashCode as its criteria for equality. However, as I now
> understand hashCode, the code _must_ be the same for equal objects,
> BUT it is _possible_ to be the same for non-equal objects. Am I
> stating this correctly?
>
> 2. When would one use a set of criteria to determine equality that is
> different from the criteria used to generate a hashCode?
>
> 3. Why aren't the hashCode_s in the following code the same?
>
> package hashcode;
>
> public class Main
> {
> public static void main(String[] args)
> {
>
> int[] a = { 1, 7, 0, 0 };
> int[] b = { 1, 7, 0, 0 };
>
> System.out.println( "equals: " + a.equals( b ) );
> System.out.println( "hash a: " + a.hashCode() );
> System.out.println( "hash b: " + b.hashCode() );
>
> Integer[] c = { 1, 7, 0, 0 };
> Integer[] d = { 1, 7, 0, 0 };
>
> System.out.println( "equals: " + c.equals( d ) );
> System.out.println( "hash c: " + c.hashCode() );
> System.out.println( "hash d: " + d.hashCode() );
>
> int[] e = a.clone();
> Integer[] f = c.clone();
>
> System.out.println( "equals: " + a.equals( e ) );
> System.out.println( "hash a: " + a.hashCode() );
> System.out.println( "hash e: " + e.hashCode() );
> System.out.println( "equals: " + c.equals( f ) );
> System.out.println( "hash c: " + c.hashCode() );
> System.out.println( "hash f: " + f.hashCode() );
> }
>
> }
>
> Thanks,
> Todd
Question I forgot:
Should the hashCode be used as an equality criteria ~ as long as it is
combined with some other criteria?
|
| |
|
| |
 |
Hendrik Maryns

|
Posted: 2008-4-9 23:24:00 |
Top |
java-programmer >> hashCode and equals (again)
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
Todd schreef:
> On Apr 9, 7:51 am, Todd <email***@***.com> wrote:
>> Hello,
>>
>> I have spent a great deal of time reading through the postings in this
>> group as well as tutorials/explanations on sites elsewhere (i.e.,
>> Roedy's, etc.), but have not been able to get a good grasp of hashCode
>> and equals. I understand most of the rules for hashCode are defined
>> for use of objects in maps and other comparable collections, so it is
>> from that POV that I am trying to get a good grasp of the concepts.
>>
>> Please help if you can - especially the SCCE later.
>>
>> 1. Originally, I thought that it made sense to make an equals method
>> that uses hashCode as its criteria for equality. However, as I now
>> understand hashCode, the code _must_ be the same for equal objects,
>> BUT it is _possible_ to be the same for non-equal objects. Am I
>> stating this correctly?
Yes. There generally is no need to make your equals() function that
complex, that it depends on hashCode()
>> 2. When would one use a set of criteria to determine equality that is
>> different from the criteria used to generate a hashCode?
If you are lazy and implement an easy hashCode(), but I wouldn鈥檛 see a
good reason of the top of my head.
>> 3. Why aren't the hashCode_s in the following code the same?
Arrays are objects. hashCode() for an array is the hashCode of Object,
which is simply based on its place in memory, it has nothing to do with
its contents. If you want the hashCode to depend on the objects in it,
use ArrayList or any other Collections class.
Similarly, equals() for arrays uses Object鈥檚 equals(), which is the same
as ==.
>> package hashcode;
>>
>> public class Main
>> {
>> public static void main(String[] args)
>> {
>>
>> int[] a = { 1, 7, 0, 0 };
>> int[] b = { 1, 7, 0, 0 };
>>
>> System.out.println( "equals: " + a.equals( b ) );
>> System.out.println( "hash a: " + a.hashCode() );
>> System.out.println( "hash b: " + b.hashCode() );
<snip>
> Question I forgot:
> Should the hashCode be used as an equality criteria ~ as long as it is
> combined with some other criteria?
The singular is 鈥榗riterion鈥? http://en.wiktionary.org/wiki/criteria
(luckily I looked that up, since I was wrong as well).
Isn鈥檛 that covered by your first question? I鈥檇 say 鈥榥o鈥?
public class Whatever {
int i, j;
@Override public boolean equals(Object other){
if (!other instanceof Whatever) {
return false;
}
Whatever otherWE = (Whatever) other;
return otherWE.i == i && otherWE.j == j;
}
@Override public int hashCode() {
return i;
}
}
Would be perfectly valid, although I would suggest to change hashCode to
something like
@Override public int hashCode() {
return i ^ j;
}
Experts will be able to tell you more about how to combine i and j,
there are some reasons for not using 鈥?鈥?
H.
--
Hendrik Maryns
http://tcl.sfs.uni-tuebingen.de/~hendrik/
==================
http://aouw.org
Ask smart questions, get good answers:
http://www.catb.org/~esr/faqs/smart-questions.html
|
| |
|
| |
 |
rossum

|
Posted: 2008-4-9 23:29:00 |
Top |
java-programmer >> hashCode and equals (again)
On Wed, 9 Apr 2008 07:51:02 -0700 (PDT), Todd
<email***@***.com> wrote:
>Hello,
>
>I have spent a great deal of time reading through the postings in this
>group as well as tutorials/explanations on sites elsewhere (i.e.,
>Roedy's, etc.), but have not been able to get a good grasp of hashCode
>and equals. I understand most of the rules for hashCode are defined
>for use of objects in maps and other comparable collections, so it is
>from that POV that I am trying to get a good grasp of the concepts.
>
>Please help if you can - especially the SCCE later.
Have a read of Chapter Three of "Effective Java":
http://java.sun.com/developer/Books/effectivejava/Chapter3.pdf That
should help,
>
>1. Originally, I thought that it made sense to make an equals method
>that uses hashCode as its criteria for equality. However, as I now
>understand hashCode, the code _must_ be the same for equal objects,
>BUT it is _possible_ to be the same for non-equal objects. Am I
>stating this correctly?
Yes. In general there will be objects that have the same hash code
but are not equal. It would be possible to use the hash code as a
filter - if the hash codes are different then the objects are not
equal, but thet depends on the correct implementation of hashCode(),
as you have noticed in your third question.
>
>2. When would one use a set of criteria to determine equality that is
>different from the criteria used to generate a hashCode?
A hash code must be an integer, which sets a limit on how many
different hash codes there are. There are far more possible strings
than there are integers/hash codes, so different strings will have to
share the same hash code.
>
>3. Why aren't the hashCode_s in the following code the same?
>
>package hashcode;
>
>public class Main
>{
> public static void main(String[] args)
> {
>
> int[] a = { 1, 7, 0, 0 };
> int[] b = { 1, 7, 0, 0 };
>
> System.out.println( "equals: " + a.equals( b ) );
> System.out.println( "hash a: " + a.hashCode() );
> System.out.println( "hash b: " + b.hashCode() );
>
>
> Integer[] c = { 1, 7, 0, 0 };
> Integer[] d = { 1, 7, 0, 0 };
>
> System.out.println( "equals: " + c.equals( d ) );
> System.out.println( "hash c: " + c.hashCode() );
> System.out.println( "hash d: " + d.hashCode() );
>
>
> int[] e = a.clone();
> Integer[] f = c.clone();
>
> System.out.println( "equals: " + a.equals( e ) );
> System.out.println( "hash a: " + a.hashCode() );
> System.out.println( "hash e: " + e.hashCode() );
> System.out.println( "equals: " + c.equals( f ) );
> System.out.println( "hash c: " + c.hashCode() );
> System.out.println( "hash f: " + f.hashCode() );
> }
>
>}
What results are you expecting? Why are you expecting those results?
I get:
equals: false
hash a: 25345246
hash b: 4047035
equals: false
hash c: 5324129
hash d: 26530674
equals: false
hash a: 25345246
hash e: 29752800
equals: false
hash c: 5324129
hash f: 27165481
You might also try using Arrays.equals():
equals: false
Arrays.equals: true
hash a: 27692793
hash b: 32801378
equals: false
Arrays.equals: true
hash c: 26999600
hash d: 25706868
equals: false
Arrays.equals: true
hash a: 27692793
hash e: 8470547
equals: false
Arrays.equals: true
hash c: 26999600
hash f: 26596606
rossum
>Thanks,
>Todd
|
| |
|
| |
 |
Eric Sosman

|
Posted: 2008-4-9 23:34:00 |
Top |
java-programmer >> hashCode and equals (again)
Todd wrote:
> Hello,
>
> I have spent a great deal of time reading through the postings in this
> group as well as tutorials/explanations on sites elsewhere (i.e.,
> Roedy's, etc.), but have not been able to get a good grasp of hashCode
> and equals. I understand most of the rules for hashCode are defined
> for use of objects in maps and other comparable collections, so it is
> from that POV that I am trying to get a good grasp of the concepts.
>
> Please help if you can - especially the SCCE later.
>
> 1. Originally, I thought that it made sense to make an equals method
> that uses hashCode as its criteria for equality. However, as I now
> understand hashCode, the code _must_ be the same for equal objects,
> BUT it is _possible_ to be the same for non-equal objects. Am I
> stating this correctly?
Right. "Objects are equal" implies "hashCodes are equal,"
but not necessarily the other way around. Think about it a
bit and you'll see why this must be so: a hashCode is an int
value, and there are "only" four billion different ints. Since
there are far, far more than four billion different Strings,
for example, they can't all have unique hashCodes; some Strings
that are different will have the same hashCode and are said
to "collide."
> 2. When would one use a set of criteria to determine equality that is
> different from the criteria used to generate a hashCode?
Rarely. You might have a class with several elements that
must agree if two instances are considered "equal," but perhaps
it would be inconvenient or expensive to compute hashCodes for
some of those elements. If so, you might decide to omit them
from your class' hashCode computation (although you would still
need to test their equality in your equals method). Usually,
though, it is advisable to include all the equality-determining
elements in the hashCode computation.
Note that the hashCode must *not* depend on anything that
is not part of the equality determination! Can you see why?
> 3. Why aren't the hashCode_s in the following code the same?
> [... hashCodes of arrays with identical content ...]
That's just the way Java is defined: two distinct arrays
are not "equal" just because they happen to have identical
content. One reason for this is that two arrays that have
the same content at one moment could have different content
a moment later; this would be inconvenient if the arrays were
already in a HashMap or in a Set or something. The Arrays
class provides static methods you can use if you want content-
based notions of equals and hashCode.
--
email***@***.com
|
| |
|
| |
 |
Patricia Shanahan

|
Posted: 2008-4-10 0:03:00 |
Top |
java-programmer >> hashCode and equals (again)
Thomas Fritsch wrote:
...
> (2) When the class principally provides more than 0xFFFFFFF different
> objects. (For example the String class: There is an inifinite number of
> different Strings, but there are only 0xFFFFFFFF different hashCodes)
...
@enable_pedantry
There are 0x100000000 distinct hash code values, 0 through
Integer.MAX_VALUE. This means, for example, that Integer can use its own
int value as hash code.
The finite number of char values, combined with the use of an int to
represent the length of a String, sets a very large but finite limit on
the number of different Strings.
@disable_pedantry
Patricia
|
| |
|
| |
 |
Eric Sosman

|
Posted: 2008-4-10 0:15:00 |
Top |
java-programmer >> hashCode and equals (again)
Patricia Shanahan wrote:
> Thomas Fritsch wrote:
> ...
>> (2) When the class principally provides more than 0xFFFFFFF different
>> objects. (For example the String class: There is an inifinite number of
>> different Strings, but there are only 0xFFFFFFFF different hashCodes)
> ...
>
> @enable_pedantry
>
> There are 0x100000000 distinct hash code values, 0 through
> Integer.MAX_VALUE. This means, for example, that Integer can use its own
> int value as hash code.
@enable_nitpick
There are 0x100000000 distinct hash code values, Integer.MIN_VALUE
through Integer.MAX_VALUE.
@disable_nitpick
> @disable_pedantry
--
email***@***.com
|
| |
|
| |
 |
Arved Sandstrom

|
Posted: 2008-4-10 0:30:00 |
Top |
java-programmer >> hashCode and equals (again)
"Todd" <email***@***.com> wrote in message
news:email***@***.com...
> Hello,
>
> I have spent a great deal of time reading through the postings in this
> group as well as tutorials/explanations on sites elsewhere (i.e.,
> Roedy's, etc.), but have not been able to get a good grasp of hashCode
> and equals. I understand most of the rules for hashCode are defined
> for use of objects in maps and other comparable collections, so it is
> from that POV that I am trying to get a good grasp of the concepts.
>
> Please help if you can - especially the SCCE later.
>
> 1. Originally, I thought that it made sense to make an equals method
> that uses hashCode as its criteria for equality. However, as I now
> understand hashCode, the code _must_ be the same for equal objects,
> BUT it is _possible_ to be the same for non-equal objects. Am I
> stating this correctly?
>
> 2. When would one use a set of criteria to determine equality that is
> different from the criteria used to generate a hashCode?
Usually you wouldn't. The significant fields that you pick to define
equality are the ones that semantically describe the identity of an object.
Once you've picked those fields for equals(), in order to satisfy the
contracts you'll pick from a subset of those fields to implement hashCode(),
bearing in mind that a set is a subset of itself. Because with a hashCode
you'd like to maximize the variability, it's in your interests to use as
many of the significant fields (used in equals()) as you can.
> 3. Why aren't the hashCode_s in the following code the same?
[ SNIP ]
Use the Arrays.equals() and Arrays.hashCode() methods.
AHS
|
| |
|
| |
 |
Mike Schilling

|
Posted: 2008-4-10 1:03:00 |
Top |
java-programmer >> hashCode and equals (again)
"Patricia Shanahan" <email***@***.com> wrote in message
news:ftipcg$jaj$email***@***.com...
> Thomas Fritsch wrote:
> ...
>> (2) When the class principally provides more than 0xFFFFFFF
>> different
>> objects. (For example the String class: There is an inifinite
>> number of
>> different Strings, but there are only 0xFFFFFFFF different
>> hashCodes)
> ...
>
> @enable_pedantry
>
> There are 0x100000000 distinct hash code values, 0 through
> Integer.MAX_VALUE. This means, for example, that Integer can use its
> own
> int value as hash code.
>
> The finite number of char values, combined with the use of an int to
> represent the length of a String, sets a very large but finite limit
> on
> the number of different Strings.
>
> @disable_pedantry
>
> Patricia
|
| |
|
| |
 |
Roedy Green

|
Posted: 2008-4-10 4:44:00 |
Top |
java-programmer >> hashCode and equals (again)
On Wed, 9 Apr 2008 07:51:02 -0700 (PDT), Todd
<email***@***.com> wrote, quoted or indirectly quoted someone
who said :
>1. Originally, I thought that it made sense to make an equals method
>that uses hashCode as its criteria for equality. However, as I now
>understand hashCode, the code _must_ be the same for equal objects,
>BUT it is _possible_ to be the same for non-equal objects. Am I
>stating this correctly?
Equal hashCodes in general are not sufficient to ensure Object
equality. However, if the hashCodes are not equal, you know the
Objects can抰 possibly be equal. Consider how many 50-character
Strings there are (65535^50) and how many possible hashCodes there are
(2^32). It should be obvious there are WAY more Strings than
hashCodes. So the same hashCode HAS to be reused over and over for
different Strings.
--
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
|
| |
|
| |
 |
Roedy Green

|
Posted: 2008-4-10 5:16:00 |
Top |
java-programmer >> hashCode and equals (again)
On Wed, 9 Apr 2008 07:51:02 -0700 (PDT), Todd
<email***@***.com> wrote, quoted or indirectly quoted someone
who said :
> Originally, I thought that it made sense to make an equals method
>that uses hashCode as its criteria for equality. However, as I now
>understand hashCode, the code _must_ be the same for equal objects,
>BUT it is _possible_ to be the same for non-equal objects. Am I
>stating this correctly?
Yes. Mathematically this is like a homologous mapping from the set of
Strings to the smaller set of HashCodes. Most of the time you can't
avoid duplicate reuse of the hashcodes.
Perhaps thinking of hashcodes as a generalisation of the % operator
might help. Equal numbers %149 must give the same result, but is also
possible for unequal numbers %149 to give the same result.
--
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
|
| |
|
| |
 |
Roedy Green

|
Posted: 2008-4-10 5:18:00 |
Top |
java-programmer >> hashCode and equals (again)
On Wed, 9 Apr 2008 07:51:02 -0700 (PDT), Todd
<email***@***.com> wrote, quoted or indirectly quoted someone
who said :
>
>2. When would one use a set of criteria to determine equality that is
>different from the criteria used to generate a hashCode?
a fast compare might check for equality of hashcode. If not equal you
know right away the two can't be equal. You then compare the
addresses. If equal, you know the entire objects must be equal (the
same).
Failing that, you check size. If they are not the same you know the
two can't be equal.
Failing that, you do your byte by byte comparison.
--
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
|
| |
|
| |
 |
Roedy Green

|
Posted: 2008-4-10 5:26:00 |
Top |
java-programmer >> hashCode and equals (again)
On Wed, 9 Apr 2008 07:51:02 -0700 (PDT), Todd
<email***@***.com> wrote, quoted or indirectly quoted someone
who said :
>2. When would one use a set of criteria to determine equality that is
>different from the criteria used to generate a hashCode?
Here is a strategy for writing an equals method for some Object:
1. Check for equality of the cached hashcodes. If they are not equal
you know right away the two Objects can抰 be equal.
2. You then compare the two addresses/references. If equal, you know
the entire Objects must be equal (the same).
3. Failing that, you check the Object sizes. If they are not the same
you know the two can抰 be equal.
4. Failing that, you do your byte by byte comparison.
--
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
|
| |
|
| |
 |
Roedy Green

|
Posted: 2008-4-10 5:28:00 |
Top |
java-programmer >> hashCode and equals (again)
On Wed, 9 Apr 2008 07:51:02 -0700 (PDT), Todd
<email***@***.com> wrote, quoted or indirectly quoted someone
who said :
> int[] a = { 1, 7, 0, 0 };
> int[] b = { 1, 7, 0, 0 };
>
> System.out.println( "equals: " + a.equals( b ) );
> System.out.println( "hash a: " + a.hashCode() );
> System.out.println( "hash b: " + b.hashCode() );
See http://mindprod.com/jgloss/hashcode.html
int [] is using the lame default hashCode algorithm for Objects based
on equals defined as ==. It uses something effectively the same as
the Object's address as the hashCode.
--
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
|
| |
|
| |
 |
Wayne

|
Posted: 2008-4-10 6:01:00 |
Top |
java-programmer >> hashCode and equals (again)
Roedy Green wrote:
> On Wed, 9 Apr 2008 07:51:02 -0700 (PDT), Todd
> <email***@***.com> wrote, quoted or indirectly quoted someone
> who said :
>
>> 2. When would one use a set of criteria to determine equality that is
>> different from the criteria used to generate a hashCode?
>
> a fast compare might check for equality of hashcode. If not equal you
> know right away the two can't be equal. You then compare the
> addresses. If equal, you know the entire objects must be equal (the
> same).
>
> Failing that, you check size. If they are not the same you know the
> two can't be equal.
>
> Failing that, you do your byte by byte comparison.
How do you quickly check the size of two objects? And why can't
the sizes be different for equal objects, e.g., some String
in the object not used in equality testing?
-Wayne
|
| |
|
| |
 |
Hal Rosser

|
Posted: 2008-4-10 7:09:00 |
Top |
java-programmer >> hashCode and equals (again)
"Todd" <email***@***.com> wrote in message
news:email***@***.com...
> Hello,
>
> I have spent a great deal of time reading through the postings in this
> group as well as tutorials/explanations on sites elsewhere (i.e.,
> Roedy's, etc.), but have not been able to get a good grasp of hashCode
> and equals. I understand most of the rules for hashCode are defined
> for use of objects in maps and other comparable collections, so it is
> from that POV that I am trying to get a good grasp of the concepts.
>
> Please help if you can - especially the SCCE later.
>
> 1. Originally, I thought that it made sense to make an equals method
> that uses hashCode as its criteria for equality. However, as I now
> understand hashCode, the code _must_ be the same for equal objects,
> BUT it is _possible_ to be the same for non-equal objects. Am I
> stating this correctly?
>
> 2. When would one use a set of criteria to determine equality that is
> different from the criteria used to generate a hashCode?
>
> 3. Why aren't the hashCode_s in the following code the same?
When comparing object, most of the time you don't worry about the hashCode,
When comparing objects, it up to you - the creator of the class - to
determine how objects of the same class are compared.
If you have a class "Customer" - and you create an array of Customer
objects, then lets assume you want to sort that array in ascending order.
Would you expect the array to be sorted in Alphabetical order by Last name -
or by zip code, or by account balance? How do you decide which is larger?
If you implement the Comparable interface and override the compareTo
method - YOU decide in what order the customers should be sorted. You can
use the sort method of the Arrays class to sort that array of objects - but
only if the Customer class implements the Comparable interface. So take a
look at the Comparable interface in the API. The answer to your questions
may be simpler than you had anticipated.
If you want info about hashCode - then Roedy and the others have you
covered. I may have interpreted your post differently.
You can have your equals method use the compareTo method.
|
| |
|
| |
 |
Lew

|
Posted: 2008-4-10 10:20:00 |
Top |
java-programmer >> hashCode and equals (again)
Hendrik Maryns wrote:
> Yes. There generally is no need to make your equals() function that
> complex, that it depends on hashCode()
It's generally an outright bad idea to base equals() on hashCode(), not merely
unnecessary.
Todd wrote:
>>> 2. When would one use a set of criteria to determine equality that is
>>> different from the criteria used to generate a hashCode?
If you had bothered to read the Javadocs for hashCode(), you'd have seen:
> The general contract of hashCode is:
> * Whenever it is invoked on the same object more than once during an
> execution of a Java application, the hashCode method must consistently
> return the same integer, provided no information used in equals
> comparisons on the object is modified. This integer need not remain
> consistent from one execution of an application to another execution
> of the same application.
> * If two objects are equal according to the equals(Object) method,
> then calling the hashCode method on each of the two objects must
> produce the same integer result.
> * It is not required that if two objects are unequal according to
> the equals(java.lang.Object) method, then calling the hashCode method
> on each of the two objects must produce distinct integer results.
> However, the programmer should be aware that producing distinct integer
> results for unequal objects may improve the performance of hashtables.
Todd:
>>> 3. Why aren't the hashCode_s in the following code the same?
Hendrik Maryns:
> Arrays are objects. hashCode() for an array is the hashCode of Object,
> which is simply based on its place in memory,
Sort of, but not really. Since objects move around in memory in the JVM,
there's no way that a non-volatile hash code could always represent a "place
in memory" in any meaningful way.
>> Question I forgot:
>> Should the hashCode be used as an equality criteria ~ as long as it is
>> combined with some other criteria?
No, it should not.
> Isn鈥檛 that covered by your first question? I鈥檇 say 鈥榥o鈥?
> Would be perfectly valid, although I would suggest to change hashCode to
> something like
> @Override public int hashCode() {
> return i ^ j;
> }
> Experts will be able to tell you more about how to combine i and j,
> there are some reasons for not using 鈥?鈥?
No there aren't. A typical approach for a 32-bit integer hash is to use:
int hash = i * 31 + j;
with an appropriate narrowing cast if i or j are wider than int. (You can
extend this to /n/ elements by induction.)
Donald Knuth <http://en.wikipedia.org/wiki/Donald_Knuth>,
goes into hashes rather thoroughly in /The Art of Computer Programming/. On
line there's <http://en.wikipedia.org/wiki/Hash_code> and a host of other
googlable references.
--
Lew
|
| |
|
| |
 |
Roedy Green

|
Posted: 2008-4-10 10:22:00 |
Top |
java-programmer >> hashCode and equals (again)
On Wed, 09 Apr 2008 18:01:16 -0400, Wayne <email***@***.com>
wrote, quoted or indirectly quoted someone who said :
>How do you quickly check the size of two objects? And why can't
>the sizes be different for equal objects, e.g., some String
>in the object not used in equality testing?
You compare the length of the parts of the object that participate in
the equality.
--
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
|
| |
|
| |
 |
Roedy Green

|
Posted: 2008-4-10 10:23:00 |
Top |
java-programmer >> hashCode and equals (again)
On Thu, 10 Apr 2008 02:21:37 GMT, Roedy Green
<email***@***.com> wrote, quoted or indirectly quoted
someone who said :
>You compare the length of the parts of the object that participate in
>the equality
there is no method to give to you aggregate length of the object. You
would have to serialise it and measure that -- hardly an efficient
process.
--
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
|
| |
|
| |
 |
Lew

|
Posted: 2008-4-10 10:48:00 |
Top |
java-programmer >> hashCode and equals (again)
Roedy Green wrote:
> int [] is using the lame default hashCode algorithm for Objects based
> on equals defined as ==. It uses something effectively the same as
> the Object's address as the hashCode.
Except that it is not really the address.
--
Lew
|
| |
|
| |
 |
| |
 |
Index ‹ java-programmer |
- Next
- 1
- Java and colour management...I have colour profile applied to my monitor.
When I browse a website that needs the Java plugin to run, it removes the
colour corrections making my display too bright! WHY the hell does java do
anything to my display???
Thanks.
- 2
- servlet mapping problemsHey guys/gals. My first attempted at servlet mapping flubbed.
Background:
A friend at work suggested I store my source in webapps\wbrl\jsp
So I have Tomcat\webapps\wbrl\jsp\WebRoll.jsp
Currently I type http://localhost:8080/wbrl/jsp/WebRoll3.jsp
This brings up my application successfully.
I would like to be able to type http://localhost:8080/wbrl and have
it bring up my web page.
So I tried to change the web.xml, but it doesnt work.
<servlet>
<servlet-name>WebRoll3</servlet-name>
<servlet-class>WebRoll3</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>WebRoll3</servlet-name>
<url-pattern>/wbrl/*</url-pattern>
</servlet-mapping>
<url-pattern>/wbrl/*</url-pattern> causes "Wrapper cannot find servlet
class WebRoll3 or a class it"
How do i fix this? Do I use filter mapping? I got totally lost in the
filter mapping explanation.
- 3
- Java coding with Agile PLM SDK - QuestionHello,
I was wondering if any one out here is dealing with a PALM System called
Agile and has some experience with the Agile SDK. If so can you email me, I
have a question on the SDK.
Also if any one know where I might find like a forum or message board that
deals with The Agile PALM system that would be help full too.
Thanks
-Dale
- 4
- Hiring Sr. Java Tool EngineerGood afternoon my name is Jason and I am a recruiter. My client is
currently seeking 3 Sr. Java Tool Engineers immediately! We are
looking for software engineers with SDLC and BCI experience.
The position is located in the Northern California area and the
company, which I can not disclose at the moment, is a groundfloor
cutting edge software application company that recently secured top
tier Venture Capital Funding. The salary range is $90k-125k and the
benefits include Medical, a great work environment and Pre-IPO Stock
Options. Company will relocate and sponsor/transfer VISAs.
If you are interested in getting more information about this position
please email me at email***@***.com and if possible please
include your resume for review. Thank you and Good Luck!
- 5
- i am new to javaIn article <eje544$gkc$email***@***.com>, Prejith took
the hamburger meat, threw it on the grill, and I said "Oh Wow"...
> hello
>
> i am new to java programming..since it is a requirement for my task i am
> suppose to write java jobs..i had a small training in core java concepts for
> 3 days..
>
> my question here is i am suppose to use some file handling and exception
> handling in my programme..can you help me with the above mentioned
> concepts...
>
> Regards
> Prejith
Okay, it breaks down like this. File handling is just that, things you
want to do to a file. You can read files and write to them. Whenever
you read to or write from a file, you have to handle exceptions, the
main one being FileNotFoundException (in case there's no file to be
found). That's why they want to empahasize both of those points.
Whenever you're doing I/O, you have to use try/catch blocks. I think
I/O exception's the other one you have to handle but my memory is
fuzzy on it right now.
HTH
--
trippy
mhm31x9 Smeeter#29 WSD#30
sTaRShInE_mOOnBeAm aT HoTmAil dOt CoM
NP: "All I Really Want" -- Alanis Morissette
"Now, technology's getting better all the time and that's fine,
but most of the time all you need is a stick of gum, a pocketknife,
and a smile."
-- Robert Redford "Spy Game"
- 6
- Tomcat is giving the wrong MIME type?I use Tomcat serves a web application. I put all the files including
jsp, css and javascript file inside the Tomcat server.
When I request a jsp page through both Firefox1.5 and IE6, I found the
css and the javascript files are not loaded correctly.
I used LiveHttpHeaders to inspect the request and response headers. I
found that the server is giving text/html to the Content-Type of all
the files.
Is the problem in Tomcat configuration or in the browser?
Any idea?
TIA...
- 7
- JVM crashes when calling C++ DLLhi all,
I am calling functions in existing C\C++ program (DLL) through a
wrapper C++ program (another DLL) from java.
ie java <---->Wrapper C++ <-----> Ordinary C++ function
My problem is JVM crashes(some times) and gives the following error,
An unexpected exception has been detected in native code outside the
VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred
at PC=0x80C2F75
Function=[Unknown.]
Library=(N/A)
NOTE: We are unable to locate the function name symbol for the error
just occurred. Please refer to release documentation for
possible
reason and solutions.
Current Java thread:
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:1647)
at java.lang.Class.getMethod0(Class.java:1893)
at java.lang.Class.getMethod(Class.java:976)
at javax.swing.UIDefaults.getUI(UIDefaults.java:726)
at javax.swing.UIManager.getUI(UIManager.java:784)
at javax.swing.JToolTip.updateUI(JToolTip.java:82)
at javax.swing.JToolTip.<init>(JToolTip.java:64)
at javax.swing.JComponent.createToolTip(JComponent.java:2603)
at javax.swing.ToolTipManager.showTipWindow(ToolTipManager.java:257)
at javax.swing.ToolTipManager$insideTimerAction.actionPerformed(ToolTipManager.java:689)
at javax.swing.Timer.fireActionPerformed(Timer.java:271)
at javax.swing.Timer$DoPostEvent.run(Timer.java:201)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
Dynamic libraries:
0x7CC00000 - 0x7CC1D000 C:\WINDOWS\SYSTEM\IMAGEHLP.DLL
Heap at VM Abort:
Heap
def new generation total 4608K, used 234K [0x10010000, 0x10510000,
0x10ed0000)
eden space 4096K, 1% used [0x10010000, 0x10021eb0, 0x10410000)
from space 512K, 31% used [0x10490000, 0x104b8a80, 0x10510000)
to space 512K, 0% used [0x10410000, 0x10410000, 0x10490000)
tenured generation total 60544K, used 11740K [0x10ed0000,
0x149f0000, 0x1c010000)
the space 60544K, 19% used [0x10ed0000, 0x11a47348, 0x11a47400,
0x149f0000)
compacting perm gen total 12032K, used 11914K [0x1c010000,
0x1cbd0000, 0x20010000)
the space 12032K, 99% used [0x1c010000, 0x1cbb2ad0, 0x1cbb2c00,
0x1cbd0000)
Local Time = Thu Aug 26 18:58:43 2004
Elapsed Time = 41
#
# The exception above was detected in native code outside the VM
#
# Java VM: Java HotSpot(TM) Client VM (1.4.2_02-b03 mixed mode)
#
Can Any one give me a solution to this problem or way to find out the
cause of the problem,
Thanks and Regards,
Chella.mani
- 8
- Java process title editingI need a component that takes a String and puts it into Unix process
table by calling natively setproctitle. On Windows it can do nothing, I
don't care.
Also a possibility to use variables such as number_of_threads would be cool.
Why? When running a lot of Java server stuff on a Linux box it's really
hard to tell which process is which. Especially in production
environment "kill -9":ing makes me always feel quite uncomfortable...
If there is no such thing, then I'll have to roll my own. But better to
check first, don't wan't to reinvent stuff. :) Google didn't turn out
anything. ..
- 9
- creating classes dynamicallyHI is it possible to create classes dynamically and if so how? What im
trying to do is have a user enter names into a textbox and use these
names to create instances of classes dynamically. the code below doesnt
work once never mind for numerous classes?????
String help= TextField.getText();
help = new SOP();
cheers
- 10
- Graphics2D question.Hello,
I want to build my application from three main classes.
1. A frame class to handle file operations.
2. A Drawing panel to render images to.
3. An engine to perform the actual rendering.
All the examples I have read so far for Image stuff in Java have
everything stuffed into one monolithic class, and the crux of the
rendering seems to be done in paint(Graphics g) or
paintComponent(Graphics g) using a g2d object cast againg the parameter g.
If I wanted to do calculations for rotations translations etc I can do
this with the AffineTransform class setX methods, but the drawImage
method of g2d seems to be handled in the paint/paintComponent methods.
This is fine until I want to specify x, y arguments in the drawImage
Method as neither Paint or PaintComponent take these parameters in their
method signature how can I do this, is there another way to draw apart
from the paint/paint component methods?
Any help appreciated.
- 11
- tomcat authentication questionI'm fairly new to configuring server.xml and web.xml files in tomcat 4.
I am trying to require password authentication for access to a
subdirectory called "update" located within ROOT. I want all files
located directly in ROOT to be available without a password. I am having
trouble determing the correct path to use for the <url-pattern> in the
web.xml file in WEB-INF so that only the files in the subdirectory
"update" within ROOT are password protected.
If I use <url-pattern>/*</url-pattern> then no pages on the site may be
accessed without a password no matter their location. I am presuming
that this means I have set up the basic authentication correctly in
tomcat-users.xml, server.xml (in conf) and web.xml (in WEB-INF) but that
I now simply need to put the correct path into the <url-pattern> in
web.xml.
However, when I use <url-pattern>/update/*</url-pattern>, I can access
all of the pages within the update directory without being asked for a
password. I've experimented with many different paths and have not had
luck with any. I have been careful to close my browser and open a new
one each time between tests. I've also tried restarting tomcat for every
new test. Nothing works.
In my server.xml file, <Realm
className="org.apache.catalina.realm.MemoryRealm" /> is located within
the <Engine> tag (not within <Host> or <context>).
Have hunted around for a solution without much luck. I assume that I am
missing something very simple.
Here is my complete web.xml file...
<web-app>
<display-name>SMUpdate App webxml</display-name>
<!-- form login security tags -->
<security-constraint>
<web-resource-collection>
<web-resource-name>SMUpdate</web-resource-name>
<url-pattern>/*</url-pattern> <!-- this works but causes password
to be required for access to all pages on entire site -->
</web-resource-collection>
<auth-constraint>
<role-name>smupdate</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>SMUpdate</realm-name>
</login-config>
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
</web-app>
Any suggestions would be very much appreciated.
Thanks.
- 12
- Why have the header 'public static void main(String[] args)' at all?Stewart Gordon wrote:
> jAnO! wrote:
> > How's that?
> > I thought that your main thread maintains a !dead state troughout the
> > runtime of your application.
>
> We're talking about the method called main, not the main thread.
Even so, both the main method and the main thread exit directly toward
the beginning of a typical GUI application. What may *not* end, on some
operating systems, is the native OS-level thread that is used to
implement Java's concept of the main thread.
It's undefined whether that OS-level thread lives or not following the
termination of Java's main thread. It must on many platforms in order
to get around POSIX and other similar thread conventions (including
Win32, IIRC) that designate it as a special thread. On a system that
implemented a very different threading convention, though, which didn't
carry POSIX and Win32's pre-multithreading baggage, it would probably
not be necessary.
--
www.designacourse.com
The Easiest Way to Train Anyone... Anywhere.
Chris Smith - Lead Software Developer/Technical Trainer
MindIQ Corporation
- 13
- Middle Tier for Java and PHPHi,
Let's say you have a Java SE Application and a PHP Web App that are both
accessing a database directly. You want to control things more formally
by using a common middle tier (enforcing things in addition to database
constraints / sprocs).
Any experience on what works and/or recommendations?
Thanks,
John
- 14
- Another error creating JVM through JNII notice that there is another poster with a similar problem to mine,
but he's on Unix and I am on Windows, and I think there may be a
setup/config problem, so I am starting a new thread
I am also getting an error creating the JVM, I am using j2sdk1.4.2_04
with MSDEV 6.0 and have cut'n'pasted about three different pieces of
sample code ( I won't post loads of code here) from working examples
found on the web, they all fail on the call to JNI_CreateJavaVM with an
error code of -1
I am wondering is there are any common setup problems, perhaps having
dlls in the wrong place of environment variables set wrongly, that
might be a cause of this problem?
Here is an example of one code sample I tried that did not work.
Incidentally if I set the version wrong, I get a different error code
(-3, which is to indicate wrong version)
jint ret;
JavaVM* jvm;
JNIEnv* env;
JavaVMInitArgs args;
JavaVMOption options[1];
args.version = JNI_VERSION_1_2;
args.nOptions = 1;
options[0].optionString = "-Djava.class.path=c:\\";
args.options = options;
args.ignoreUnrecognized = JNI_FALSE;
ret = JNI_CreateJavaVM(&jvm, (void **)&env, &args);
- 15
|
|
|