【发布时间】:2014-06-23 16:22:31
【问题描述】:
在 Java 中,当您定义一个类时,您就是在隐式定义一个类型。说,我定义了一个类User:
class User {}
然后我们得到一个类User和一个隐式类型User。
当我们使用名称User 时,有时我们引用class User,有时引用type User。让我举几个例子:
User user = new User();
^^^^(1) ^^^^(2)
public void saveUser(User user) {
^^^^(3)
}
class Dao<T> {
def save(T t) {}
}
new Dao<User>();
^^^^(4)
Class cls = User.class;
^^^^(5)
User user = (User) someObj;
^^^^(6)
我的理解:
- 位置
(1)是type User - 位置
(2)是class User的构造函数 - 位置
(3)是type User - 位置
(4)是type User - 位置
(5)是class User - 位置
(6)是type User
我的理解正确吗?
【问题讨论】:
-
真的需要区分吗?类始终是类型
-
如果我无法弄清楚
class和type之间有什么区别,我发现很难理解subclassing、subtyping或scala 的类型系统,以及它是什么是如果有的话。 -
@Freewind 你为什么突然谈论 Scala?
-
如果你有
User myVar = new User();,那么你的变量myVar是用户类型,同时你可以说myVar然后指向一个 User 类的对象..但我认为没有必要为此烦恼:) -
一个实例可以被认为是任何时候类的快照。所以每当你看到 new() 时,我们都在谈论实例。只是一个想法