~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

I'm afraid no. What I want you to do is to re-read this post again and come up with a small sample snippet/test method which creates hard-coded trees based on the test case, call the leaf() method on them and check whether the output is the same as that mentioned in the test case.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

> what is the right way to create new object

All the Date class constructors except the no-arg and the one which takes milliseconds are deprecated. If the purpose of your question was to find the right way to create a Date object, look into the Calendar and SimpleDateFormat classes as already suggested..

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

OK, my point was:
The representation of C or F for the user can change based on how it is presented to the user. E.g. the user can enter "C" for celsius and tomorrow might want to enter "CELSIUS" etc. As far as your domain (problem statement) representation is concerned, there are only two temperature types (C and F). It is *your* responsibility (or the responsibility of the presentation/user interface) layer to convert the user entered value to C or F temp type i.e. how the user perceives Celsius or Fahrenheit shouldn't change how your *application* perceives the temp type.

To talk in terms of code (not compiled):

enum TempType { C, F }

public class Test {

    public static void main(final String [] args) {
        String line = scanner.nextLine().trim();

        // Account for case sensitivity here ---v
        // instead of doing it in enums
        if("C".equalsIgnoreCase(line)) {
            TempType t = TempType.valueOf(
        } else {
            System.err.println("Invalid temp type passed: one of 'c' or 'C' expected (without quotes)");
        }
    }

}

The advantage here is that for a big application (though your application isn't ATM, but we are here to learn, right?) all usages of this TempType won't be burdened by checking for two different types (c and C) for something which is the same i.e. Celsius temperature type. This is a big win in terms of expressiveness and maintainability.

To move a step above, you can code the same logic in the enum type by extending it to …

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Couple of problems with your code:
- Enum declarations as per the specification can't be local i.e. placed in a method. Move the enum declaration either outside of your TemperateConverter class or either outside the main() method.
- Why C, c and F, f (BTW, you have got both capital F) when in the end both C/c stand for the same thing? Just declare two members for your enum, C and F and you should be good to go.
- You can't directly convert between enum and strings, which is what you seem to be doing in TempType = in.nextChar() (which is BTW incorrect since TempType is a type name). Use valueOf() method of an enum which returns the enum object from string representation. Make sure you account for the case sensitivity of enums by passing in a stripped and upper-case version of the user entered string.
- No error handling when the user enters "A" as the temperature.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Error? I think what you have posted in the `toString()` representation of the Scanner class. If your code doesn't work, you need to add some debugging statements or even better use an IDE like Eclipse/Netbeans which has debugging support. If you are getting an exception, post the entire stack trace.

Also, in case your motivation for doing System.out.println(input) was to print the contents of the text file, it won't work. You need to loop over the file contents, line by line. Look into the Javadocs of the Scanner class for more details.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Hello sir I am printing the values of my leaf nodes.

OK

I am just asking if i got the right way of getting the leaf values and if it is efficient i know you also have your own code in this which is more efficient...

Likewise, I'm implying that you don't need my help to confirm that your algorithm works. You can run the test cases I posted above (once through code and once by using pen n paper) to confirm the same. Also, assuming that this is for some university course, first concentrate on correctness, then on performance/speed.

Sir about the test above can you give me the example?so that i can have idea and work with it?Thank you in advance hoping for your positive response...

Example as in code? No. The entire purpose of giving the least possible information of my posts have to do with you learning how to start thinking the right way. Have you been implementing this code just based on the suggestions/algorithm posted? If not, I'm sure you can at least try rather than directly asking for assistance. How do you create a empty tree? How do you create a tree with a single node? How would you create a tree with 3 given numbers? Like I said previously, try it out, it shouldn't be that difficult.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Glad to hear that a long time lurker finally decided to join Daniweb and help out others. Welcome to Daniweb. :)

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Are you using some sort of collection to store the related buttons which you need to enable/disable? If not, use a List or an array and enabling/disabling would just be a matter of looping over the buttons and setting the appropriate flag.

EDIT: Slooow :-)

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

What's your end goal here? Printing out the values of the leaf nodes or returning them to the caller?

Also, since you have written almost all the code here, you need to come up with your own ways of verifying the correctness of your code rather than asking others to verify. A few test cases which I can come up with are:

  • Pass the root (which would be NULL) of an empty binary tree -> should print nothing
  • Pass a tree containing just a single node (i.e. the root) -> should print root value
  • Pass a tree created using the values (1, 2, 3, 4) -> output should be 4
  • Pass a tree created using the values (4, 3, 2, 1) -> output should be 1
  • Pass a tree created using the values (10, 3, 20, 1, 4, 15, 25) -> output should be (1, 4, 15, 25)

Give it a try!

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

When posting error messages, post the entire exception stack trace by highlighting the line on which the error has occurred rather than just posting the exception message.

Also, why does left() method take a count? Is this method for counting leaf nodes? Returning all the values of leaf nodes?

You check for node.llink != null && node.rlink != null , but what happens if one of them is null and the other isn't? You still end up calling leaf() method which doesn't have a NULL check and hence the exception.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

IMO, it is too primitive a wrapper to be used for creating games. But then again, the choice here might depend on what is the purpose of the entire exercise; creating a simplistic game engine/framework and then creating a game or directly creating a game. :)

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

On a related note, something which you should always keep in mind when writing code is to follow the principle of least intrusion when it comes to defining contracts; be it between methods of the same class or when exposing an external API.

Let's take a trivial example of printing the contents of a String array. You can of course write a method which would loop over all the strings and print them, but what happens when you need to print out "Foo" objects? Taking a step back, we realize that the "print" method really need not know about the real type of the object it would be printing. Given that every Object inherits the 'toString' method from the Object superclass, you can simply loop over any type of list and just output its string representation using the toString() method.

So basically, never ever define external contracts in terms of implementation/specific classes; they would make your code needlessly inflexible. Be as generic as possible i.e. make sure the method being called doesn't know "too" much about the caller and vice-versa.

Oh and BTW, apologies for the near-offtopic rant. :-)

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Though I personally haven't used it, jMonkey game engine looks pretty impressive.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

The purpose is to have limited available connections at a time

Are you sure it's limited number of "connections" you are looking into or is it limited number of serviceable connections? Because the way you have presented your sample snippet, you would anyways be consuming a "socket" on the server side, with the difference being the total number of client requests concurrently being handled/processed.

Anyways, I think the confusion here stems from the fact that you are creating a special kind of thread (MyServerThread) rather than creating a runnable which in turn can be processed by threads i.e. separate the notion of a single request handling task from the notion of how it is serviced (i.e. one thread per request, one thread for all requests, a pool of threads for all requests etc.)

Also, is creating your own thread pool and absolute requirement here since that might involve a lot of thorough testing on your part and still might not turn out to be perfect. If no, then you can use the concept of Executor service which was introduced in Java 5, specifically the fixed thread pool executor.

The Javadocs of the ExecutorService interface has an example which perfectly fits your use-case.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

It seems that there is a way using which you can compile a Java code represented as a String object as mentioned here. Have you tried that?

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

what's thew benefits of dynamic loading in java?

DI frameworks like Spring are based around the concept of dynamically loading classes on fly and creating objects (aka beans) using them on demand or lazily. A servlet implementation like Tomcat picks up user defined class name from the web.xml file and loads the corresponding class from the packaged WAR file etc. etc.

and How can I load a classes befopre run the program?

If you have hard-references to a given class, it would automatically be loaded by the classloader. Otherwise, you can use the method Class.forName("pkg.Klass") to load a class on fly which returns the loaded Class object for that given class.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

You are missing the assignment to "value" field of your object i.e. this.value = s .

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

If you are open to a pure Java DB, I'd recommend having a look at H2. It's faster than HSQLDB.

H2 can also be used in embedded mode. Read this and this for more info.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

I've never used Swing/AWT but I suppose the answer to this question is pretty generic; you basically "append" the new value to the existing value rather than setting the new value as it is. So if "txtBox" is your text field, after a key is pressed, you might want to do txtBox.value += keyValue as opposed to txtBox.value = keyValue .

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

As it has already been mentioned many times before, posting questions without showing attempt would be ignored by most members here. Also, a simple search for "find leaf node" would bring up the description of a leaf node with its implementation.

BTW, please don't PM me. I have limited time I can spare on this forum. Instead focus on framing the question in such a way which would yield maximum responses.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

As per this article, this feature is undocumented and deprecated. If you still want to use it, the article presents presumably correct usage of the class.

If you are using Java 6+, I'd recommend using the new compiler API which doesn't tie you down to a specific implementation (i.e. Sun JVM). More details in this article.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

What do you think? Are you still getting compile time errors? Have you tried running it with a sample tree? Does it give out correct values? Wrong values?

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

That's because you ignored Jon's reply:

max is a shorthand for "a function returning the maximum of two numbers". You'll find an implementation of such a function in java.Math.

Also, when the node is NULL, don't return -1 but 0 if you want the height of a single node tree to be 1.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

What kind of error? Compile time? Run time? Post the latest code and highlight the line which gives the error along with the complete error description.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

...it has already 'been mentioned' (present perfect). OK, I'm game, let's see if it's true. I hereby publicly request my user name to be changed to 'NoChoice'. I await with baited breath the next excuse.

I would have thought that it were perfectly clear - especially to a Super Moderator! (Perhaps I need to address the 'Super Duper Moderator'?) :-P

EDIT:

Read the rules, they're freely available! ;-)

Difficult to take you seriously and discuss things with you when instead of having a sane conversation you drop down to jabs/sarcasm. Anyways, given that your name has been changed, keeping this thread open any longer would just result in more hurt.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

OK, here's the deal. You chose to come to Daniweb, become its member after agreeing with the rules etc. As it has already being mentioned, you can get your user-name changed if you don't want to associate the name "Andy Sears" with Daniweb.

Given all these things, I really don't see what your problem is...

EDIT:

taking away the user's internationally accepted right to 'delete' their account

[citation need]

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Sir can i asked question max(height(node.L), height(node.R)) + 1 for what is this for just curious?

This expression inspects the heights of the left and right sub-tress (look at the recursive call "height") and returns the maximum of them. So basically, the first invocation of this method would be by passing in the "root" of the tree and this method would in turn invoke the same method for the nodes of the right/left subtree of the root node.

The best way here would be to "draw" a tree using pencil and paper and trace the output of the calls.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

As per this, the basic algorithm for calculating the height of a binary tree is:

height(node): 
   if node == null:
        return 0
   else:
        max(height(node.L), height(node.R)) + 1

Now come up with an implementation and post your updated code if it still doesn't work.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Thank you in advance hoping for your positive response...sir if this is correct how can i get the height of the tree and the leaves and level of the tree...like i send you a while the problem

Post what you've got till now (regarding the tree height) and we'll pick it from there.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

When posting exceptions, make sure you include the full stack trace along with the "Line" on which the exception has occurred.

Anyways, I have highlighted the problematic part of the posted code:

if(temp.num<n)
      	{
          current= temp;
           current.rlink.num=n;
      	
		
			if(temp.rlink==null)
			 {
			  temp.rlink.num=n;
			  System.out.println("Inserted at the right"+current.rlink.num);
			 }

My comments:

  • current.rlink.num=n; : This part of code makes the assumption that the "current node" always has a right link which is non-null; this assumption is flawed. You don't even need this statement.
  • temp.rlink.num=n; : Again, this code is flawed since this piece is placed inside the IF check if(tmp.rlink == null) and hence will *always* cause NullPointerException.

When I say insert the value, you need to assign the "Node" object to rlink/llink instead of playing around with the "num" field. Like:

if(tmp.num < n) {
    if(tmp.rlink == null) {
        tmp.rlink = newNode;
    } else {
        tmp = tmp.rlink;
    }
}
~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Hello sir thank you for the reply...but sir how can i put return my insertnum method is void?....

My point was that by doing early returns, you cut down the nesting depth. Also, just putting "return" is also valid and is in fact a well known method for breaking early.

if(isEmpty()) {
    root = newNode;
    System.out.println("Successfully inserted root node");
    return;
}
tmp = root;
while(tmp != null) {
    // remaining code
}

I am confuse also with my algorithm it is poor algorithm sir...i apologize i cant write my algorithm i just want to learn in this sir

I of course understand that and hence my suggestion to "write down the steps" so that you have the clarify of the implementation in your head before you go off to write the code. Anyways, you are almost there. You still don't handle the condition wherein a value is already present in the tree. Inside your "while", you need something like:

while(tmp != null) {
    if(tmp.num == n) {
        return; // value already present, break out
    }
    if(tmp.num < n) {
        // the new value should lie at the "RIGHT" of the current node
        // Is the right link for tmp NULL?
        //  if yes, then attach the new node to the right of tmp and print the message
        //  if no, then re-assign tmp as "tmp = tmp.rlink" and "continue"
    } else {
        // similar to above explanation; just replace "RIGHT" with "LEFT"
    }
}

Another point; why do …

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Think of environment variables as OS specific variables e.g. JAVA_HOME. In windows you set them using the command set JAVA_HOME="c:/Java" , in *nix, you do it as export JAVA_HOME=/env/java . More info here.

AFAIK, the CLASSPATH environment variable is used by your JVM process to "search" for classes. But I would rather recommend not to mess with environment variables and use the -classpath switch (for both java and javac). This would ensure that all the dependencies are explicitly mentioned.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

sir i am confuse what variable should i re-assign my temp?

Reassign in the sense that since you want to continue traversing the tree and the "while" construct checks for the variable "temp", update temp accordingly based on the results of the comparison.

in this, If the tree is empty, insert the root node and return from the method

Just add a "return" statement after assigning a new node to the "root" so that you don't have to nest your remaining statements i.e. completely remove "else".

BTW, do you have an algorithm ready for this thing? This type of confusion normally happens when you don't completely understand what you are trying to implement. Write down the algorithm here which you are currently using to implement this binary tree.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Dani is the site owner and goes by the name of "cscgal" on this site.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

if you state you cannot delete my posts, can u please delete the IP addresses / folder paths / file names that I have mentioned?

Again, that would be kind of impractical. You have around 60+ posts, all of which contain either some sort of IP address/file name. Editing all those posts to make sure the context of the thread remains unchanged and at the same time snipping out the IP address/name/paths is something which I can't do in the small amount of time I dedicate for this site. Not to mention your posts in turn were "quoted" by other members which increases the number of posts which have to be edited. :(

Also, to respond to your PM, I can't delete your posts; this isn't my site and deleting posts is against the rules. Maybe you should get in touch with the site owner.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

I received your PM and would want to say that unfortunately I won't be able to comply with your request. The contents which you want to be deleted would take the meaning out of the thread, rendering the entire thread useless.

As already clarified in my previous post, we *try* to help out members by deleting sensitive information from their posts which include credentials, home address etc. Also, it's worth noting that Daniweb isn't the only place where you have your "sensitive" information posted publicly:

http://www.python-forum.org/pythonforum/viewtopic.php?f=3&t=18035
http://bytes.com/topic/python/answers/888277-how-submit-webform-using-clientform

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Sorry can't be done; it's against the site rules to delete threads which don't violate the rules.

I see that you have asked around 15 questions in the Python forum. Deleting the threads would be make the efforts put in by the contributors go down the drain. Of course, we would be more than happy to "snip" out any confidential information which mentions your company name, personal details etc. if you could point out the specific posts.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

You still are not following the steps 2 to 4 as mentioned in my previous post; read and understand them and get back if it still isn't clear.

The infinite loop is because you check "temp" for NULL and since "temp" is not re-assigned in the while loop, the while loop never breaks.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

The error is because "newNode" is of type "Node" whereas "current.num" is an "int".

Also in your "insert()" code a few comments:

  • No need to explicitly set llink and rlink as NULL, they would anyways be NULL
  • If the tree is empty, insert the root node and return from the method
  • If the value of the newly inserted element is the same as the current node which is checked (temp), return again.
  • Also, you need to "re-assign" temp in your while loop so that you are always dealing with the appropriate node rather than always the root node.

Update your code and re-post again if it still doesn't work.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Almost there. :)

Rule 1)
If going by pure generic code (no intermixing with legacy code).
<?> same as <? extends object>.
Even though <?> is a reifiable type and <? extends object> is not, since both doesn't allow adding into the reference type (of the above) hence type safety is always guaranteed between the two.

As far as generic declarations go, <?> is the same as <? extends Object>. The difference is in the the way both are encoded in the class file. Also, there is one corner case which I have come across wherein <?> can't be blindly replaced by <? extends Object>.

Rule 2)
Mixing legacy code and generics.
Raw -> <?> same since both are reifiable type and also since <?> means could be any type or unknown supertype.
Raw -> <? extends Object> unchecked conversion warning since Raw is a reifiable type and <? extends Object> is not. Hence type safety is not guaranteed at run time.

When mixing legacy and generic code, there are two things which come in play:

  • Assigning generic type to raw type: would always work obviously for backwards compatibility
  • Assigning raw type to generic type: would *never* work since the compiler has no idea what the orignal raw type contains due to erasure. *BUT*, the way I see it, there is an exception to this rule; <?> is the only generic constuct which is not subjected to erasure (is …
~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Use the Calendar class for performing Date related operations, esp the add() and set() methods. A sample snippet in Groovy:

import java.util.*

def c = Calendar.getInstance()
c.set(Calendar.DAY_OF_MONTH, 2)
c.set(Calendar.MONTH, 2)
// c now contains the date 2nd of March 2011
def i = 1
while(i <= 7) {
  c.add(Calendar.DAY_OF_MONTH, -1)
  println c.getTime()
  i++
}
OUTPUT:
Tue Mar 01 11:31:45 IST 2011
Mon Feb 28 11:31:45 IST 2011
Sun Feb 27 11:31:45 IST 2011
Sat Feb 26 11:31:45 IST 2011
Fri Feb 25 11:31:45 IST 2011
Thu Feb 24 11:31:45 IST 2011
Wed Feb 23 11:31:45 IST 2011

Use the SimpleDateFormat for converting the Date object to a desired representation.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

It would be a bit difficult to diagnose the problem without having a look at the setup. Do you get the same error for a fresh java project created which contains a single Hello world code? The build file shouldn't be a problem since AFAIK it is auto-generated by Netbeans (unless you have messed around with it). Also paste the complete stack trace you are getting.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

This happens because you don't "search" for the appropriate parent node for the new node to be inserted. You'd need a solution which recursively or within a loop searches for an appropriate parent to whose left/right the new node would be inserted. Read the basic algorithm here.

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

Definitely strange that a fresh rewrite using Eclipse/Netbeans didn't work.

I can't speak for Netbeans but with Eclipse how are you creating a fresh project? Are you able to run a simple "hello world" code in Eclipse?

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

As an aside - It's probably just me not understanding you properly but I can't see why the protocol that you suggest would work. Even if the server knows the size of the file to be sent, the client socket cannot close after the file has been sent as it is waiting for a message from the server

Yes, you are right, the socket can't close after the file has been sent. *But*, the server now knows *how* much data is the "file" contents and how much data is "message" contents. So now you are saved from the infinite-loop condition since you have another condition you need to check for; the size of the data transferred. Something like this:

long fLen = /* read file length from the message */;
long totalLen = fLen;
int bytesRead = -1;
while(true) {
    if(totalLen < buf.length) {
        bytesRead = in.read(buf, 0, totalLen);
    } else {
        bytesRead = in.read(buf);
    }
    totalLen -= bytesRead;
    out.write(buf, 0, bytesRead);
    if(totalLen <= 0) break;
}

You helped me to understand what the problem was and even though I fixed it in a roundabout way, without implementing hybrid protocols

Does your existing code handle just the files sent from the client or even messages? If you are only transferring files, you really don't need a hybrid protocol. If your current code deals with both file contents and messages from client, I'd be interested in seeing how you managed to pull it off without having a demarcation between the …

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

I am having a problem implementing the protocol you suggested as I don't know how big the file will be from the client side

I'm not sure why it's that difficult; knowing the number of bytes present in the file is as simple as making a single method call on the File object you are anyways creating.

I'm assuming because it's still waiting for the client socket to close.

Right, because AFAIK, as long as the client socket stream is open, you'd never get a -1 when reading the stream. Also, the while loop condition should be >= 0 or != -1.

This didn't make any difference to the performance of the program

For this simple program, sure, it won't be a problem. But converting the data read into a String object and looping over it would surely take a hit when dealing with multiple clients and large files.

So, I was wondering... wouldn't it be possible to use the exception blocks to implement a fail safe option? In other words, instead of sending a success message, write code within the client catch block and server catch block that would account for any problems with the socket. Surely, if there are problems with the socket then one can assume that the information was lost somehow in transit and steps could then be taken to remedy the situation. Then I wouldn't have to implement hybrid protocols at all.

You lost me there with the "problems with socket" bit? …

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

What about from List <?> to List <? extends Object>? This doesn't generate a compiler unchecked conversion warning (from reifiable to non reifiable type).

Yes, because now we are dealing with purely generic declarations/code as apposed to mixing generic/raw code, so the normal generics rules apply.

List<?> is an all encompassing type; as long as the RHS is a List, there would never be a problem with the assignment. Think of it as the same as assigning List<? extends Object> or as a matter of fact any generic List declaration to a raw List.

...or so I think. :)

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

I don't see the difference between <?> (Unbounded wildcard) and <? extends Objects> (Since Object is the highest upper bound in Java)

Interesting; you are indeed correct in quoting that there is absolutely no difference between "?" and "? extends Object" except for the fact that parameterized types with unbounded wildcards (List<?>) are reifiable types whereas a parameterized type with a bound (List<? extends Object>) is not reifiable.

Assigning List to List<?> doesn't generate a warning since both are reified types whereas the second one generates warning because List is a reified type whereas List<? extends Object> isn't (i.e. is affected by erasure)

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

> "Flag bad post"

In case you want to rectify something you posted (of course given it follows the rules) after the 30 minute edit time frame or you have a duplicate post which you want to flag for deletion.

> "Post Reply"

You want to quote yourself or add to the contents of your previous post after the 30 minute edit time frame.

:)

~s.o.s~ 2,560 Failure as a human Team Colleague Featured Poster

can som1 teach me on how to put this into a link and so that u can see how it looks..>? thnx! admins!

Hi hellB0y, welcome to Daniweb. :)

Regarding links, Daniweb doesn't support rendering of ad-hoc HTML. If you want to style your text (add hyperlinks, italics, bold etc.), use the buttons provided at the top of the editor to do the same.