Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Ок, круто, но зачем заставлять человека делать то, что легко сделает робот или ide?Вы действительно ничего не понимаете или придуриваетесь? Как ваш «робот или ide» поймут — хотел человек делать переменную «g» модифицируемой или нет? Если вы в неё положите 9.8, а какой-нибудь индус ниже по тексту функции — решит засунуть 1.62, то ни один робот и на одна ide не смогут с этим ничего сделать если вы не опишите эту переменную как final!
а разработчик найдет куда можно намного более полезно потратить времяАга. Будет в отладчике сидеть пытаясь выяснить почему у него ракеты не туда летают.
Кстати, на стаковерфлоу большинство согласны со мной, так что ваша позиция как минимум не бесспорнаУ вас двойка в школе по математике или по английскому?
stackoverflow.com/questions/316352/why-would-one-mark-local-variables-and-method-parameters-as-final-in-java
Вот шикарный баг в эклипсе на эту тему:
bugs.eclipse.org/bugs/show_bug.cgi?id=130888#c2
Далее по дереву комментариев вы ссылаетесь на опыт EclipseЭто не я ссылаюсь. Это мой оппонент ссылается. В тщетной попытке найти хотя бы одно место в интернете, где бы большинство согласились с его безапелляционным «зачем заставлять человека делать то, что легко сделает робот или ide?». Пока не удалось. Багтрекер Eclipse был просто последним местом, где он пытался это сделать :-)
var var = 0;
val val = var;var или val. Что бывает исключительно редко.Если добавит новых проблем — «против».
при неявном определении типа переменной list она будет LInkedList
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Hello("All!"));
Console.WriteLine(Hello("Mary"));
Console.WriteLine(Hello("Jon"));
}
static string Hello(string to)
{
var def = new People();
if (to == "Jon")
def = new Man();
if (to == "Mary")
def = new Women();
Console.WriteLine("Type = {0}", def.GetType());
return def.Hello(to);
}
}
public class People
{
public virtual string Hello(string to)
{
return $"Hello {to}!";
}
}
public class Man : People
{
public override string Hello(string to)
{
return $"Hey {to}!";
}
}
public class Women : People
{
public override string Hello(string to)
{
return $"Hello dear {to}!";
}
}Type = ConsoleApplication1.People
Hello All!!
Type = ConsoleApplication1.Women
Hello dear Mary!
Type = ConsoleApplication1.Man
Hey Jon!var def = new People(); на какой-нибудь var def = new DefaultPeople(); — и получим ошибку компиляции (Men и Women невозможно привести к типу DefaultPeople)var def = new People();People def = new People();Например (с потолка) var secureRandom = someMethod(), где возвращаемый тип вместо SecureRandom кто-то просто решит поменять на Random, а название переменной конечно же никто не отрефакторит.
import java.math.BigInteger;
public class Main {
interface MyCalcLambda { BigInteger run(BigInteger input); }
public static void runCalc(MyCalcLambda calc) { }
public static void main(String[] args) {
runCalc((BigInteger a) -> a.multiply(a));
}
}
Var и val в Java?