In the , lines 155-190 (reproduced below) constitute the makeRef method:  public static &lt;T, I&gt; TerminalOp&lt;T, I&gt; makeRef(Collector&lt;? super T, I, ?&gt; collector) {     Supplier&lt;I&gt; supplier = Objects.requireNonNull(collector).supplier();     BiConsumer&lt;I, ? super T&gt; accumulator = collector.accumulator();     BinaryOperator&lt;I&gt; combiner = collector.combiner();     class ReducingSink extends Box&lt;I&gt;             implements AccumulatingSink&lt;T, I, ReducingSink&gt; {         @Override         public void begin(long size) {             state = supplier.get();         }          @Override         public void accept(T t) {             accumulator.accept(state, t);         }          @Override         public void combine(ReducingSink other) {             state = combiner.apply(state, other.state);         }     }     return new ReduceOp&lt;T, I, ReducingSink&gt;(StreamShape.REFERENCE) {         @Override         public ReducingSink makeSink() {             return new ReducingSink();         }          @Override         public int getOpFlags() {             return collector.characteristics().contains(Collector.Characteristics.UNORDERED)                    ? StreamOpFlag.NOT_ORDERED                    : 0;         }     }; }   I am asking explicitly about lines 177-189:      return new ReduceOp&lt;T, I, ReducingSink&gt;(StreamShape.REFERENCE) {         @Override         public ReducingSink makeSink() {             return new ReducingSink();         }          @Override         public int getOpFlags() {             return collector.characteristics().contains(Collector.Characteristics.UNORDERED)                    ? StreamOpFlag.NOT_ORDERED                    : 0;         }     };   What does the code after the return statement do (and why is it not unreachable)?  I'm guessing it's doing something like overriding some methods from an interface called ReduceOp, but it appears that such an interface (if it exists) is not in the same place as .
1841
What is the use of anonymous classes in Java? Can we say that usage of anonymous class is one of the advantages of Java?
6902
Let's say I have a generic member in a class or method, like so: public class Foo&lt;T&gt; {     public List&lt;T&gt; Bar { get; set; }          public void Baz()     {         // get type of T     }    }  When I instantiate the class, the T becomes MyTypeObject1, so the class has a generic list property: List&lt;MyTypeObject1&gt;. The same applies to a generic method in a non-generic class: public class Foo {     public void Bar&lt;T&gt;()     {         var baz = new List&lt;T&gt;();                  // get type of T     } }  I would like to know what type of objects the list of my class contains. So what type of T does the list property called Bar or the local variable baz contain? I cannot do Bar[0].GetType(), because the list might contain zero elements. How can I do it?
115518
What's the term for this design?  object.method1().method2().method3()   ..when all methods return *this?  I found the term for this a while ago, but lost it meanwhile. I have no clue how to search for this on google :) Also if anyone can think of a better title for the question, feel free to change it.  Thanks  Update-Gishu: After reading about it, I feel that your question is misleading w.r.t. code snippet provided.. (Feel free to rollback)  Method Chaining  object.method1().method2().method3()   Fluent Interfaces  private void makeFluent(Customer customer) {         customer.newOrder()                 .with(6, "TAL")                 .with(5, "HPK").skippable()                 .with(3, "LGV")                 .priorityRush();     }
86715
I'm looking at some GXT code for GWT and I ran across this use of Generics that I can't find another example of in the Java tutorials. The class name is  if you want to look at all of the code.  Here are the important parts:  private RpcMap map;  public &lt;X&gt; X get(String property) {   if (allowNestedValues &amp;&amp; NestedModelUtil.isNestedProperty(property)) {     return (X)NestedModelUtil.getNestedValue(this, property);   }   return map == null ? null : (X) map.get(property); }   X is defined nowhere else in the class or anywhere in the hierarchy, and when I hit "go to declaration" in eclipse it just goes to the &lt;X&gt; in the public method signature.  I've tried to call this method with the following two examples to see what happens:  public Date getExpiredate() {     return  get("expiredate"); }  public String getSubject() {     return  get("subject"); }   They compile and show no errors or warnings.  I would think at the very least I would have to do a cast to get this to work.  Does this mean that Generics allow a magic return value that can be anything and will just blow up at runtime?  This seems counter to what generics are supposed to do.  Can anyone explain this to me and possibly give me a link to some documentation that explains this a little better?  I've went through Sun's 23 page pdf on generics and every example of a return value is defined either at the class level or is in one of the parameters passed in.
13551
UPDATE   I have combined various answers from here into a 'definitive' answer on a .  Original question  In my code I have an event publisher, which exists for the whole lifetime of the application (here reduced to bare essentials):  public class Publisher {     //ValueEventArgs&lt;T&gt; inherits from EventArgs     public event EventHandler&lt;ValueEventArgs&lt;bool&gt;&gt; EnabledChanged;  }   Because this publisher can be used all over the place, I was quite pleased with myself for creating this little helper class to avoid re-writing the handling code in all subscribers:  public static class Linker {     public static void Link(Publisher publisher, Control subscriber)     {          publisher.EnabledChanged += (s, e) =&gt; subscriber.Enabled = e.Value;     }      //(Non-lambda version, if you're not comfortable with lambdas)     public static void Link(Publisher publisher, Control subscriber)     {          publisher.EnabledChanged +=              delegate(object sender, ValueEventArgs&lt;bool&gt; e)              {                   subscriber.Enabled = e.Value;              };     } }   It worked fine, until we started using it on smaller machines, when I started getting the occasional:  System.ComponentModel.Win32Exception Not enough storage is available to process this command   As it turns out, there is one place in the code where subscribers controls are being dynamically created, added and removed from a form. Given my advanced understanding of garbage collection etc (i.e. none, until yesterday), I never thought to clear up behind me, as in the vast majority of cases, the subscribers also live for the lifetime of the application.  I've fiddled around a while with , but it doesn't work with anonymous delegates (not for me anyway).  Is there anyway out of this problem? I really would like to avoid having to copy-paste boiler-plate code all over the shop.  (Oh, and don't bother with asking me WHY we are creating and destroying controls all the time, it wasn't my design decision...)  (PS: It's a winforms application, but we've upgraded to VS2008 and .Net 3.5, should I consider using the ?)  (PPS: Good , but if anyone can come up with an equivalent to the WeakEventHandler which avoids me having to remember to explicitly UnLink/Dispose, that would be cool...)  EDIT I must admit that I worked around this problem by "recycling" the controls in question. However the workaround has come back to haunt me as the 'key' I was using is apparently non-unique (sob). I've just discovered other links  (tried this - seems to be a bit too weak - GC clears delegates even if target is still alive, same problem with  below),  (forces you to modify publisher, and doesn't really work with anonymous delegates) and  (cited-as-incomplete by Dustin Campbell).   It occurs to me that what I'm looking for may be semantically impossible - closures are designed to 'hang around even after I'm gone'.   I've found another workaround, so I'll stick with that, pending a .
7409
Should a method that implements an interface method be annotated with @Override?  The  says:      Indicates that a method declaration is intended to override a method declaration in a superclass. If a method is annotated with this annotation type but does not override a superclass method, compilers are required to generate an error message.   I don't think that an interface is technically a superclass. Or is it?
1725
I have a generic method with this (dummy) code (yes I'm aware IList has predicates, but my code is not using IList but some other collection, anyway this is irrelevant for the question...)  static T FindThing&lt;T&gt;(IList collection, int id) where T : IThing, new() {     foreach T thing in collecion     {         if (thing.Id == id)             return thing;     }     return null;  // ERROR: Cannot convert null to type parameter 'T' because it could be a value type. Consider using 'default(T)' instead. }   This gives me a build error      "Cannot convert null to type parameter   'T' because it could be a value type.   Consider using 'default(T)' instead."   Can I avoid this error?
14488
I saw this in , in reference to shortcomings of the Java spec:  There are more shortcomings and this is a subtle topic. Check  out: public class methodOverloading{      public static void hello(Integer x){           System.out.println(&quot;Integer&quot;);      }       public static void hello(long x){           System.out.println(&quot;long&quot;);      }       public static void main(String[] args){          int i = 5;          hello(i);      } }  Here &quot;long&quot; would be printed (haven't checked it myself), because the compiler chooses widening over auto-boxing. Be careful when using auto-boxing or don't use it at all!  Are we sure that this is actually an example of widening instead of autoboxing, or is it something else entirely? On my initial scanning, I would agree with the statement that the output would be &quot;long&quot; on the basis of i being declared as a primitive and not an object.  However, if you changed hello(long x)  to hello(Long x)  the output would print &quot;Integer&quot; What's really going on here?  I know nothing about the compilers/bytecode interpreters for java...
79065
I'm trying to figure out which of these interfaces I need to implement. They both essentially do the same thing. When would I use one over the other?
123439
Ok, bear with me guys and girls as I'm learning.  Here's my question.  I can't figure out why I can't override a method from a parent class.  Here's the code from the base class (yes, I pilfered the java code from an OOP book and am trying to rewrite it in C#).  using System;  public class MoodyObject {     protected String getMood()     {         return "moody";     }      public void queryMood()     {         Console.WriteLine("I feel " + getMood() + " today!");     } }   and here are my other 2 objects that inherit the base class (MoodyObject):  using System; using System.Collections.Generic; using System.Linq; using System.Text;  namespace ConsoleApplication1 {     public class SadObject: MoodyObject     {         protected String getMood()         {             return "sad";         }          //specialization         public void cry()         {             Console.WriteLine("wah...boohoo");         }     } }   And:  using System; using System.Collections.Generic; using System.Linq; using System.Text;  namespace ConsoleApplication1 {     public class HappyObject: MoodyObject     {         protected String getMood()         {             return "happy";         }          public void laugh()         {             Console.WriteLine("hehehehehehe.");         }     } }   and here is my main:  using System; using System.Collections.Generic; using System.Linq; using System.Text;  namespace ConsoleApplication1 {     class Program     {         static void Main(string[] args)         {             MoodyObject moodyObject = new MoodyObject();             SadObject sadObject = new SadObject();             HappyObject happyObject = new HappyObject();              Console.WriteLine("How does the moody object feel today?");             moodyObject.queryMood();             Console.WriteLine("");             Console.WriteLine("How does the sad object feel today?");             sadObject.queryMood();             sadObject.cry();             Console.WriteLine("");             Console.WriteLine("How does the happy object feel today?");             happyObject.queryMood();             happyObject.laugh();         }     } }   As you can see, pretty basic stuff, but here's the output:     How does the moody object feel today?   I feel moody today!      How does the sad object feel today? I   feel moody today! wah...boohoo      How does the happy object feel today?   I feel moody today! hehehehehehe.   Press any key to continue . . .   Not as I expected.  I've tried to make the base method virtual and calling override when trying to override it and that just gets me this error "cannot override inherited member 'MoodyObject.getMood()' because it is not marked virtual, abstract, or override".  I also tried it without the virtual and override and it thinks I'm trying to hide the base method.  Again, I'm new to OOP and would appreciate any guidance.  EDITED TO ADD:  I found it!  The MoodyObject.cs was only a "solution item" in the solution explorer as opposed to a "ConsoleApplication1" item.  I dragged it down to where it belonged in the solution explorer and voila!  It works now.  I marked Luc's answer below as the answer because he offered the help I needed to get to where I have it resolved... I'm learning so much here.  It's amazing and you guys and girls are crazy smart!
33281
In terms of Java, when someone asks:      what is polymorphism?   Would overloading or overriding be an acceptable answer?  I think there is a bit more to it than that.   IF you had a abstract base class that defined a method with no implementation, and you defined that method in the sub class, is that still overridding?  I think overloading is not the right answer for sure.
25516
I have heard that the Java implementation of Generics is not as good as the C# implementation. In that the syntax looks similar, what is it that is substandard about the Java implementation, or is it a religious point of view?
5040
I'm using an API that requires me to pass a function pointer as a callback. I'm trying to use this API from my class but I'm getting compilation errors.   Here is what I did from my constructor:  m_cRedundencyManager-&gt;Init(this-&gt;RedundencyManagerCallBack);   This doesn't compile - I get the following error:      Error  8 error C3867: 'CLoggersInfra::RedundencyManagerCallBack': function call missing argument list; use '&amp;CLoggersInfra::RedundencyManagerCallBack' to create a pointer to member   I tried the suggestion to use &amp;CLoggersInfra::RedundencyManagerCallBack - didn't work for me.   Any suggestions/explanation for this??  I'm using VS2008.  Thanks!!
88139
I am wondering why the C# 3.0 compiler is unable to infer the type of a method when it is passed as a parameter to a generic function when it can implicitly create a delegate for the same method.  Here is an example:  class Test {     static void foo(int x) { }     static void bar&lt;T&gt;(Action&lt;T&gt; f) { }      static void test()     {         Action&lt;int&gt; f = foo; // I can do this         bar(f); // and then do this         bar(foo); // but this does not work     }    }   I would have thought that I would be able to pass foo to bar and have the compiler infer the type of Action&lt;T&gt; from the signature of the function being passed but this does not work.  However I can create an Action&lt;int&gt; from foo without casting so is there a legitimate reason that the compiler could not also do the same thing via type inference?
11352
Duplicate:     Maybe this is a very silly question but I don't understand why I can't declare two methods that have the same signature when they have different return types.  public class MyClass {     private double d = 0;      public double MyMethod()     {         return d;     }      public string MyMethod()     {         return d.ToString();     } }   I get a compile error that states that the class already defines a member with the same parameter types.  (Obviously the way I'm using this in my code isn't as simple as my example code...but I think it gets the idea across.)  Am I missing something concerning OO design that makes what I'm trying to do an OOP anti-pattern? Surely the compiler should be able to determine which method I'm trying to use as long as I specifically tell it which one I want.  Given MyClass myClass = new MyClass(); I would expect the following code to work:  double d = myClass.MyMethod(); string s = myClass.MyMethod();   I would expect the following code to have problems:  var v = myClass.MyMethod();   But even in the case of var it should result in a compile error.  Can anyone see what I'm doing wrong here? I'm more than happy to be corrected. :-)
63863
I have a subclass with an over-ridden method that I know always returns a particular subtype of the return type declared in the base class.  If I write the code this way, it won't compile.  Since that probably doesn't make sense, let me give a code example:  class BaseReturnType { } class DerivedReturnType : BaseReturnType { }  abstract class BaseClass {     public abstract BaseReturnType PolymorphicMethod(); }  class DerivedClass : BaseClass {     // Compile Error: return type must be 'BaseReturnType' to match      // overridden member 'BaseClass.PolymorphicMethod()'     public override DerivedReturnType PolymorphicMethod() {          return new DerivedReturnType();      } }   Is there any way to accomplish this in C#?  If not, what's the best way to achieve something similar?  And why isn't it allowed?  It doesn't seem to allow any logical inconsistency, since any object returned from the over-ridden method still is BaseReturnType.  Maybe there is something I hadn't considered though.  Or maybe the reason is technological or historical.
54645
In the Java snippet:  SyndFeedInput fr = new SyndFeedInput(); SyndFeed sf = fr.build(new XmlReader(myInputStream)); List&lt;SyndEntry&gt; entries = sf.getEntries();   the last line generates the warning   "The expression of type List needs unchecked conversion to conform to List&lt;SyndEntry&gt;"  What's an appropriate way to fix this?