小编Már*_*ner的帖子

在目录树中获取文件深度

我正在使用命令find递归浏览目录树,计算文件,大小等...

现在我需要获取每个文件的目录深度.FreeBSDCentOS都有可移植的方法吗?

我知道find能够打印实际的目录深度,但遗憾的是这只适用于CentOS,而不是FreeBSD.

另外 - 我需要保持标准find输出或将目录深度放在输出的开头并从那里切割.

directory bash freebsd centos depth

4
推荐指数
1
解决办法
2630
查看次数

避免从仪表板上的管道子壳

我有这个示例代码:

find "$1" ! -regex "$regex" 2>/dev/null | while read line ; do
    a="$line"
done

echo ("$a") # prints nothing because of subshell
Run Code Online (Sandbox Code Playgroud)

我需要:

  • 使子外壳在$a外部(在全局范围内)可见的解决方法
  • 不使用 bash 的进程替换
  • 与 dash、bash 和 korn shell 兼容

我怎样才能做到这一点?有什么简单的解决办法吗?

bash ksh pipe subshell dash-shell

1
推荐指数
1
解决办法
1103
查看次数

Intellij IDEA中是否针对Ant插件中的命名空间是否存在URI未注册错误

我正在使用带有Ant插件的IntelliJ IDEA。我想在build.xml文件中使用条件任务,因此我将以下代码添加到了project根标签:

xmlns:if="ant:if" xmlns:unless="ant:unless"
Run Code Online (Sandbox Code Playgroud)

但是Intellij IDEA显示错误消息“ URI未注册”。我怎样才能解决这个问题?

java ant intellij-idea

1
推荐指数
1
解决办法
225
查看次数

为什么IDEA报告可能的NullPointerException?

为什么使用辅助变量进行空检查以防止 NullPointerException,而直接空值检查不是?


考虑这两个代码块:

public boolean passwordMatch1(Player player, String password) {
    if (LoggedPlayer.getLoggedPlayer(player) != null) {
        return LoggedPlayer.getLoggedPlayer(player).getPassword().equals(password);
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

public boolean passwordMatch2(Player player, String password) {
    LoggedPlayer p = LoggedPlayer.getLoggedPlayer(player);
    if (p != null) {
        return p.getPassword().equals(password);
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

它们做的完全一样,方法passwordMatch2使用LoggedPlayer被调用的辅助变量p,而方法passwordMatch1是直接检查null.

LoggedPlayer.getLoggedPlayer(Player player)已知方法null在没有LoggedPlayer找到适当的实例时返回.


IDEA正在报告以下警告passwordMatch1:

方法调用'getPassword'可能会产生'java.lang.NullPointerException

虽然passwordMatch2没有警告.

(IntelliJ IDEA Ultimate 2017.2)

java intellij-idea nullpointerexception

1
推荐指数
1
解决办法
353
查看次数

推理变量 T 在一种方法中与特定 Class<T> 和实例 <T> 具有不兼容的边界

我正在使用包含我想使用的方法的库。简化的签名如下所示:

final class ThirdPartyClass
{
    public static <T> void thirdPartyMethod(Class<T> clazz, T instance)
    {
        // does something
    }
}
Run Code Online (Sandbox Code Playgroud)

在它内部thirdPartyMethod(),期望作为T第一个参数,并期望该特定类的实例T作为第二个参数。

现在我有这个简单的抽象类,它正在调用该方法:

abstract class Parent<T extends Number>
{
    public Parent(T instance)
    {
        ThirdPartyClass.thirdPartyMethod(instance.getClass(), instance);
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

ThirdPartyClass 类中的方法thirdPartyMethod 不能应用于给定类型;
必需:java.lang.Class,T
找到:java.lang.Class<capture#1 of ? extends java.lang.Number>, T
原因:推断变量 T 具有不兼容的边界
等式约束:capture#2 of ? 扩展 java.lang.Number
下界:T

如何修改该类Parent,使其符合预期的参数thirdPartyMethod()?如果可以的话附上解释。

java generics extends

1
推荐指数
1
解决办法
1236
查看次数