在c#中var关键字的一种用法是隐式类型声明。Java中var的等效语法是什么?
当前回答
我知道这是旧的,但为什么不创建一个var类,创建不同类型的构造函数,根据调用的构造函数,你会得到不同类型的var。您甚至可以内置方法将一种类型转换为另一种类型。
其他回答
JEP - JDK增强提案
http://openjdk.java.net/jeps/286
JEP 286:局部变量类型推断
作者Brian Goetz
// Goals:
var list = new ArrayList<String>(); // infers ArrayList<String>
var stream = list.stream(); // infers Stream<String>
一个简单的解决方案(假设你使用的是一个不错的IDE)是在所有地方输入'int',然后让它为你设置类型。
实际上我只是添加了一个名为var的类,所以我不需要输入不同的东西。
代码仍然过于冗长,但至少您不必键入它!
在Java 10中,等价的是……var。
Java 10确实得到了局部变量类型推断,所以现在它有var,这与c#相当(据我所知)。
它还可以推断出不可标记的类型(程序员无法在该位置命名的类型;尽管哪些类型是不可标记的是不同的)。参见var和匿名类的技巧(你永远不应该在工作中使用)。
我能发现的一个区别是,在c#中,
如果一个名为var的类型在作用域中,那么var关键字将解析为该类型名称,并且不会被视为隐式类型局部变量声明的一部分。
在Java 10中,var不是一个合法的类型名称。
在Java 10中可以,但只适用于局部变量,也就是说,
你可以,
是肛门 = 10;var aString = “Var”;
但是不能,
Var anull = null;//因为在这种情况下不能推断类型
查看规范以获得更多信息。
推荐文章
- 如何在java中格式化持续时间?(如格式H:MM:SS)
- urlencoder .encode(字符串)已弃用,我应该使用什么代替?
- javax.transaction.Transactional vs . org.springframework.transaction.annotation.Transactional
- Java 8接口方法中不允许“同步”的原因是什么?
- 如何找到Java堆大小和内存使用(Linux)?
- 使用Enum实现单例(Java)
- RabbitMQ与通道和连接之间的关系
- buildSessionFactory()配置方法在Hibernate中已弃用?
- Spring MVC -如何获得所有的请求参数在一个地图在Spring控制器?
- 如何在Java中按两个字段排序?
- 文件之间的差异。路径中的分隔符和斜杠
- 在方法参数中使用NotNull注释
- Spring MVC中处理可选参数的@RequestParam
- Tomcat:如何查找正在运行的Tomcat版本?
- “java”、“javaw”和“javaws”之间有什么区别?