Citace od: Ladislav Thon kdy 21. 06. 2017, 11:41:47....Pattern matching: http://openjdk.java.net/jeps/305Declaration-site variance: http://openjdk.java.net/jeps/300
Citace od: dustin kdy 21. 06. 2017, 13:01:44Osobně dávám přednost uvedení typu proměnné, vidím ji na první pohled, narozdíl např. při přiřazení vrácené hodnoty metody.
Citace od: dustin kdy 21. 06. 2017, 13:01:44Proměnnou včetně typu i přiřazení vyrobí IDE jednou klávesovou zkratkou, jen následně uvedu její název, přičemž mi často rovnou nabídne ten správný. Přijde mi, že na to má Idea nějakou heuristiku učící se z mého stylu pojmenování proměnných, protože se často trefuje hned první nabídkou.
Citace od: dustin kdy 21. 06. 2017, 13:01:44Ukecanost javy při použití slušného IDE nijak nezdržuje.
Citace od: Ondra Satai Nekola kdy 21. 06. 2017, 13:21:07A diamant taky nepouzivas?
CitaceAno, to pojmenovavani ma IntelliJ dobre zvladnute. IMO o duvod mene jeste mit typ vypsany. (Samozrejme jak kdy. Nekdy je lepsi nepouzivat vsechno. Ale u lokalnich promennych bych vetsinou inferenci preferoval - pro psani i cteni)
CitacePodobne jako i bez for each cyklu nebylo psani cyklu tezke - idea ho generovala. Jen kod neni tak primocare citelny.
Citace od: dustin kdy 21. 06. 2017, 13:37:08CitacePodobne jako i bez for each cyklu nebylo psani cyklu tezke - idea ho generovala. Jen kod neni tak primocare citelny.For-each generuje samozřejmě taky včetně správného jména a typu položky (iter + tab), ale to se běžně používá.
Citace od: Ondra Satai Nekola kdy 21. 06. 2017, 13:47:58Jen se ocividne nedohodneme, zda byva lokalni typova inference ta citelnejsi varianta
CitaceOsobně dávám přednost uvedení typu proměnné
Citace od: Ondra Satai Nekola kdy 21. 06. 2017, 12:20:35Citace od: Kit kdy 21. 06. 2017, 12:15:23U lokálních objektů přece také potřebuji znát rozhraní, abych věděl, které metody toho objektu mohu volat. Přece to nebudu dolovat reflexí.Aha, ty jsi ani nepochopil, co je to ta typova inference.Kód [Vybrat] Rozbalitval foo = new Foo(bar);foo je typu Foo. Rozdil je v tom, ze jsi nemusel Foo psat dvakrat, typ foo za tebe odvodil (inferoval) prekladac. Zadnou reflexi nepotrebujes.
Citace od: Kit kdy 21. 06. 2017, 12:15:23U lokálních objektů přece také potřebuji znát rozhraní, abych věděl, které metody toho objektu mohu volat. Přece to nebudu dolovat reflexí.
val foo = new Foo(bar);
val foo = (cond) ? new Foo() : new Bar();foo.method();
Citace od: dustin kdy 21. 06. 2017, 13:57:49Mimochodem lze očekávat, že po zavedení lokální typové inference bude idea nabízet generování obou variant, takže opět to půjde rychleji.
Citace od: Kit kdy 21. 06. 2017, 13:56:56A co třeba tohle?Kód [Vybrat] Rozbalitval foo = (cond) ? new Foo() : new Bar();foo.method();Jak v takovém případě zafunguje inference? Bude hledat společná rozhraní obou tříd?
Citace od: Ondra Satai Nekola kdy 21. 06. 2017, 15:07:53Citace od: Kit kdy 21. 06. 2017, 13:56:56A co třeba tohle?Kód [Vybrat] Rozbalitval foo = (cond) ? new Foo() : new Bar();foo.method();Jak v takovém případě zafunguje inference? Bude hledat společná rozhraní obou tříd?A co bys tak rekl? Jaky typ ma tenhle vyraz (cond) ? new Foo() : new Bar();? Nehledej slozitost, kde neni. Nebo se to alespon douc.
Interface foo = (cond) ? new Foo() : new Bar();foo.method();
Citace od: Kit kdy 21. 06. 2017, 15:25:39Za normálních okolností uvedu na levé straně rozhraní a je to.Kód [Vybrat] RozbalitInterface foo = (cond) ? new Foo() : new Bar();foo.method();
Citace od: Ondra Satai Nekola kdy 21. 06. 2017, 15:47:38Citace od: Kit kdy 21. 06. 2017, 15:25:39Za normálních okolností uvedu na levé straně rozhraní a je to.Kód [Vybrat] RozbalitInterface foo = (cond) ? new Foo() : new Bar();foo.method();A jake "je to"? Kazdy vyraz ma nejaky typ, jestli je nasledne pouzity nebo neni pouzity v inferenci je uplne jedno. Zrovna s interfacem ti tohle nemuze v Jave obecne projit.
Citace od: Kit kdy 21. 06. 2017, 16:13:59Citace od: Ondra Satai Nekola kdy 21. 06. 2017, 15:47:38Citace od: Kit kdy 21. 06. 2017, 15:25:39Za normálních okolností uvedu na levé straně rozhraní a je to.Kód [Vybrat] RozbalitInterface foo = (cond) ? new Foo() : new Bar();foo.method();A jake "je to"? Kazdy vyraz ma nejaky typ, jestli je nasledne pouzity nebo neni pouzity v inferenci je uplne jedno. Zrovna s interfacem ti tohle nemuze v Jave obecne projit.V Javě to funguje normálně, stejně jako v PHP. Je to standardní součástí designu Javy. Zkus si to.
Citace od: Ondra Satai Nekola kdy 21. 06. 2017, 16:37:42Citace od: Kit kdy 21. 06. 2017, 16:13:59V Javě to funguje normálně, stejně jako v PHP. Je to standardní součástí designu Javy. Zkus si to.Eh, v tomhle (Interface foo muze dodat ve specifickem pripade vic informace nez samotna inference typu) mas pravdu. To jsem pomotal, omlouvam se.
Citace od: Kit kdy 21. 06. 2017, 16:13:59V Javě to funguje normálně, stejně jako v PHP. Je to standardní součástí designu Javy. Zkus si to.