小编Kev*_*nko的帖子

Vim删除空白行

我可以运行什么命令来删除Vim中的空行?

vi vim

654
推荐指数
11
解决办法
34万
查看次数

如何制作闪屏?

我想让我的应用看起来更专业,所以我决定要制作一个闪屏.

我将如何创建它然后实现它?

android splash-screen

509
推荐指数
10
解决办法
64万
查看次数

为什么ConcurrentHashMap没有ConcurrentHashSet

HashSet基于HashMap.

如果我们看一下HashSet<E>实现,一切都在管理之下HashMap<E,Object>.

<E>被用作关键词HashMap.

我们知道这HashMap不是线程安全的.这就是我们ConcurrentHashMap在Java中的原因.

基于此,我很困惑,为什么我们没有一个应该基于的ConcurrentHashSet ConcurrentHashMap

还有什么我想念的吗?我需要Set在多线程环境中使用.

另外,如果我想创建我自己的ConcurrentHashSet,我可以通过替换HashMapto来实现它,ConcurrentHashMap并将其余部分保留原样?

java collections concurrency hashmap hashset

496
推荐指数
8
解决办法
20万
查看次数

我车库里真的有车吗?

我是Java编程的新手,试图掌握OOP.

所以我构建了这个抽象类:

public abstract class Vehicle{....}
Run Code Online (Sandbox Code Playgroud)

和2个子类:

public class Car extends Vehicle{....}
public class Boat extends Vehicle{....}
Run Code Online (Sandbox Code Playgroud)

Car并且Boat还包含一些不常见的唯一字段和方法(不具有相同的名称,因此我无法在Vehicle中为它们定义抽象方法).

现在在mainClass我设置了我的新车库:

Vehicle[] myGarage= new Vehicle[10];
myGarage[0]=new Car(2,true);
myGarage[1]=new Boat(4,600);
Run Code Online (Sandbox Code Playgroud)

在我尝试访问Car独有的一个字段之前,我对多态性非常满意,例如:

boolean carIsAutomatic = myGarage[0].auto;
Run Code Online (Sandbox Code Playgroud)

编译器不接受.我使用cast来解决这个问题:

boolean carIsAutomatic = ((Car)myGarage[0]).auto;
Run Code Online (Sandbox Code Playgroud)

这有效......但它对方法没有帮助,只是字段.意思是我做不到

(Car)myGarage[0].doSomeCarStuff();
Run Code Online (Sandbox Code Playgroud)

所以我的问题是 - 我的车库里到底有什么?我试图获得直觉以及了解"幕后"发生了什么.


为了将来的读者,请简要总结以下答案:

  1. 是的,有一个CarmyGarage[]
  2. 作为一种静态类型语言,如果通过基于Vehicle超类的数据结构访问那些方法/字段,Java编译器将不会访问非"Vehicle"的方法/字段(例如Vehicle myGarage[])
  3. 至于如何解决,有以下两种主要方法:
    1. 使用类型转换,这将减轻编译器的顾虑,并将设计中的任何错误留给运行时
    2. 我需要铸造的事实说设计是有缺陷的.如果我需要访问非车辆功能,那么我不应该将汽车和船只存储在基于车辆的数据结构中.要么使所有这些功能属于Vehicle,要么使用更具体(派生)类型的结构
  4. 在许多情况下,组合和/或接口将是继承的更好替代方案.可能是我下一个问题的主题......
  5. 如果有人有时间浏览答案,那么还有许多其他好的见解.

java inheritance

259
推荐指数
10
解决办法
3万
查看次数

函数重载按返回类型?

为什么更多主流的静态类型语言不支持返回类型的函数/方法重载?我想不出那样做.通过参数类型支持过载似乎没有那么有用或合理.怎么这么不受欢迎呢?

programming-languages overloading language-design function-calls

248
推荐指数
5
解决办法
10万
查看次数

使用相同的方法在类中实现两个接口.覆盖哪种接口方法?

两个具有相同方法名称和签名的接口.但是由单个类实现,那么编译器将如何识别哪个接口的方法是什么?

例如:

interface A{
  int f();
}

interface B{
  int f();
}

class Test implements A, B{   
  public static void main(String... args) throws Exception{   

  }

  @Override
  public int f() {  // from which interface A or B
    return 0;
  }
}   
Run Code Online (Sandbox Code Playgroud)

java overriding interface

223
推荐指数
6
解决办法
14万
查看次数

从.NET中的字符串中获取url参数

我在.NET中有一个字符串,实际上是一个网址.我想要一种简单的方法来从特定参数中获取值.

通常,我只是使用Request.Params["theThingIWant"],但这个字符串不是来自请求.我可以Uri像这样创建一个新项目:

Uri myUri = new Uri(TheStringUrlIWantMyValueFrom);
Run Code Online (Sandbox Code Playgroud)

我可以myUri.Query用来获取查询字符串......但是我显然必须找到一些分解它的regexy方法.

我是否遗漏了一些明显的东西,或者没有内置的方法来创建某种类型的正则表达式等等?

.net c# parameters url parsing

220
推荐指数
7
解决办法
30万
查看次数

如何找到哪个rpm包提供我正在寻找的文件?

作为一个例子,我正在寻找一个mod_files.sh大概附带php-devel包的文件.我猜想yummod_files.shphp-devel x86_64 5.1.6-23.2.el5_3软件包安装文件,但文件似乎没有安装在我的文件系统上.

如何找出安装特定文件的软件包?我正在寻找我不一定已经在本地下载的软件包,其中可能包含我正在寻找的文件.

我正在使用CentOS 5.

centos rpm yum

203
推荐指数
4
解决办法
28万
查看次数

Java抽象接口

考虑一个例子(在java中编译)

public abstract interface Interface {
    public void interfacing();
    public abstract boolean interfacing(boolean really);
}
Run Code Online (Sandbox Code Playgroud)

为什么接口被"声明"抽象是必要的?是否有适用于抽象接口的其他规则?


最后:如果abstract已经过时,为什么它包含在Java中?抽象界面有历史吗?

java interface abstract

194
推荐指数
4
解决办法
10万
查看次数

如何将DecimalFormat的小数分隔符从逗号更改为点/点?

我有一个小的疯狂方法,将BigDecimal值转换为漂亮可读的字符串.

private String formatBigDecimal(BigDecimal bd){
    DecimalFormat df = new DecimalFormat();
    df.setMinimumFractionDigits(3);
    df.setMaximumFractionDigits(3);
    df.setMinimumIntegerDigits(1);
    df.setMaximumIntegerDigits(3);
    df.setGroupingSize(20);
    return df.format(bd);
}
Run Code Online (Sandbox Code Playgroud)

然而,它还产生了一个所谓的分组分隔符",",它使我的所有值都出现如下:

xxx,xxx
Run Code Online (Sandbox Code Playgroud)

我确实需要分隔符是点或点而不是逗号.有没有人知道如何完成这个小壮举?

我已阅读,尤其是这个,现在死,但我无法找到一个方法来完成这件事.我是以错误的方式接近这个吗?这样做有更优雅的方式吗?甚至可能是一个解决不同本地数字表示的解决方案,因为逗号将完全符合欧洲标准.

java android decimal-point bigdecimal decimalformat

192
推荐指数
5
解决办法
24万
查看次数