Java Virtal Machine.net

[ News ] rss

February 01, 2011

Mark Wielaard: New GPG key. Finally created a new GPG key using gnupg. The old one was a DSA/1024 bits one and 8 years old. The new one is a RSA/2048 bits one. I will use the new one in the future to sign any release tarballs I might create. pub 2048R/57816A6A 2011-01-29 Key f...

More »

February 01, 2011

Andrew Hughes: [SECURITY] IcedTea6 1.7.8, 1.8.5, 1.9.5 Released!. We are pleased to announce a new set of security releases, IcedTea6 1.7.8, IcedTea6 1.8.5 and IcedTea6 1.9.5. This update contains the following security updates: The IcedTea project provides a harness to build the source code from OpenJDK6 u...

More »

April/2024
SunMonTueWedThuFriSat
 123456
78910111213
141516171819 20
21222324252627
282930    

[ Archives News
for 'Developers' ]

home > news > developers > don't use implicit return types

Don't Use Implicit Return Types

JavaFX, like Scala, is a fully statically typed language. However, unlike Java, it allows you to omit type declarations in many places, since it can infer it. Coupled with the fact that you can use expressions as statements, and that the last expression in a function will be the return value, this lets you write really simple and clear code. def s = "Hello"; def len = s.length(); function product(a: Number, b: Number) { a * b } The function above shows an "Implicit Return Type": The compiler figures out the return type, which in this case will be a Number, and that is the signature computed for the function. Unfortunately, this can sometimes lead to trouble! Here's a real-world example: public function clearSelection() { selected = null; } This function clears the selection in a node. The intention of the developer was probably for this function to have a "void" return type. But that is not the return type! The last statement is an expression, an assignment, which has the type of the left hand side, which is actually a node. So the return type here is a Node! And it could easily have leaked an implementation class too. This may not seem like a big deal here, but what if a subclass wanted to override this function? It would try this: override function clearSelection() { super.clearSelection(); moreStuff(); } And this would fail compilation, with a surprising error messa...


Date: June, 30 2010
Url: http://blogs.sun.com/tor/entry/don_t_use_implicit_return


Others News

©2002-2019Java-Virtual-Machine.net free web design software | Bootstrap Templates | best web design software | free website generator | free icon maker