我正在阅读Gilad Bracha撰写的"Java编程语言中的泛型",我对一种声明风格感到困惑.以下代码位于第8页:
interface Collection<E>
{
public boolean containsAll(Collection<?> c);
public boolean addAll(Collection<? extends E> c);
}
interface Collection<E>
{
public <T> boolean containsAll(Collection<T> c);
public <T extends E> boolean addAll(Collection<T> c);
// hey, type variables can have bounds too!
}
Run Code Online (Sandbox Code Playgroud)
我的困惑来自第二次宣言.我不清楚<T>声明在以下行中的用途是什么:
public <T> boolean containsAll(Collection<T> c);
Run Code Online (Sandbox Code Playgroud)
该方法已经有一个与之关联的类型(布尔值).
为什么要使用它<T>以及它对编码器有什么作用?
我认为我的问题需要更具体一些.
你为什么要写:
public <T> boolean containsAll(Collection<T> c);
Run Code Online (Sandbox Code Playgroud)
VS
public boolean containsAll(Collection<T> c);
Run Code Online (Sandbox Code Playgroud)
<T>在containsAll的第一个声明中,我不清楚,目的是什么.
首先,这一切都是在Mac OS X上完成的,版本10.6.4
我复制了一个文件树,其中包含一些已经从subversion中检出的java代码.我想删除该树中的所有.svn文件.所以我使用了以下命令:
find . -name .svn -exec rm -fr .svn {} \;
Run Code Online (Sandbox Code Playgroud)
我收到这样的消息:
rm: ./repository/entity/.svn: Directory not empty
Run Code Online (Sandbox Code Playgroud)
我查看了目录,它看起来像这样:
$ ls -ld .
-r--r--r-- 1 tgia staff 1250 Aug 13 10:48 entries
Run Code Online (Sandbox Code Playgroud)
该文件的父目录如下所示:
$ ls -ld .
drwxr-xr-x 4 tgia staff 136 Aug 20 16:55 .
Run Code Online (Sandbox Code Playgroud)
好的,更改文件的权限:
$ chmod u+w entries
chmod: Unable to change file mode on entries: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
我不懂,这些文件怎么了?我没有尝试使用chmod似乎改变了文件权限.文件所有权是正确的.我很痛苦.WTF?即使root也无法改变它们.
$ sudo chmod u+w entries
Password:
chmod: Unable to change file mode on entries: Operation …Run Code Online (Sandbox Code Playgroud)