(It was actually Java 7 that introduced the "diamond operator".)

I don't know that we have a guideline. I personally like to have policy in hand 
for questions like these, but I'm not sure we can in this case. Let me give 
another example, taken directly from the codebase:

private final Map<GraphListener, Stack<SecuredGraphListener>> listenerMap = new 
HashMap<GraphListener, Stack<SecuredGraphListener>>();

That seems to me to read much better as:

private final Map<GraphListener, Stack<SecuredGraphListener>> listenerMap = new 
HashMap<>();

because the repetition of the type parameters doesn't add any real information 
for the reader. But you are right to point to other examples wherein the 
repetition is really helpful. Here are some rules of thumb (not rules to 
constrain the code, just helpful hints) that I would be ready to uphold:

If you are constructing an object to fill a reference as you declare it, use 
<>. Repeating the type parameters doesn't help anyone understand what is going 
on, and it can be very verbose.

Otherwise, consider how far away the declaration in question lives. If that is 
far enough, consider repeating the type parameters to obviate the need for 
readers to go back and forth in the code base.

Does that sound reasonable?

---
A. Soroka
The University of Virginia Library

> On Oct 8, 2016, at 7:45 PM, Claude Warren <[email protected]> wrote:
> 
> I know that in Java 8 the old
> {code}
> Map<String> m = new HashMap<String>();
> {code}
> can now be written as
> {code}
> Map<String> m = new HashMap<>();
> {code}
> But why?  I suppose in the above it is simple to figure out what is being
> constructed however if the declaration of the var and the constructor are
> separated is it not confusing?  Do we have a standard/guideline for this in
> the Jena code?
> 
> Suppose:
> {code}
> MyClass<String> myClass = null;
> 
> // .... some lines later
> 
> myClass = new MyClass<>();
> {code}
> 
> makes it difficult to quickly determine the type that myClass is using.
> Perhaps I am just tilting at windmills, or am an old curmudgeon.
> 
> Guidance please,
> Claude
> 
> .
> 
> 
> -- 
> I like: Like Like - The likeliest place on the web
> <http://like-like.xenei.com>
> LinkedIn: http://www.linkedin.com/in/claudewarren

Reply via email to