小编Ant*_*nyW的帖子

Android Studio - 推断Nullity?

在查看Android Studio的Analyze选项卡中的各种选项时,我遇到了一个名为"推断无效"的选项.我很好奇这个工具应该如何使用以及它能为我的Android Studio项目做些什么?

android intellij-idea android-studio

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

使用compareTo实现equals方法

一般问题:equals在Java中实现默认方法的覆盖时,我应该关注简单地利用已经实现的compareTo方法与将独立逻辑写入equals方法?我注意到有人在另一个问题中提到了foo.equals((String)null)返回false然后String.compareTo((String)null)抛出一个NullPointerException.是什么让这些不一致的结果成为理想的功

样品equals方法:

@Override
public boolean equals(Object obj) {
    if (obj != null && obj instanceof MyClass) {
        MyClass msg = (MyClass)obj;
        return this.compareTo(msg) == 0;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

编辑: 引用可比较文档

当且仅当e1.compareTo(e2)== 0与c1的每个e1和e2的e1.equals(e2)具有相同的布尔值时,C类的自然排序被认为与equals一致. null不是任何类的实例,并且e.compareTo(null)应该抛出NullPointerException,即使e.equals(null)返回false

编辑:

经过进一步审查后,我发现可比较文件还说明了以下内容:

实现者必须确保所有x和y的sgn(x.compareTo(y))== -sgn(y.compareTo(x)).(这意味着如果y.compareTo(x)抛出异常,x.compareTo(y)必须抛出异常.)

因为null.compareTo(x)显然会抛出一个NPE,所以也x.compareTo(null)应该抛出一个NPE.而对于平等,情况不一定如此.我对NPE的正确处理非常重视,所以我发现这个相对重要.

java equals compareto

12
推荐指数
2
解决办法
4402
查看次数

maven与javadocs的依赖关系

3个问题:

下面是JUnit的两个maven依赖项.我一直在搜索互联网几个小时,似乎无法确定第二个是Javadoc +代码还是只有Javadoc.我需要一个还是两个?此外,将Javadocs包含在开发项目中而不是生产构建中的最有效方法是什么?(我不希望为每台机器上的每个依赖项手动下载javadoc.)

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
  <classifier>javadoc</classifier>
</dependency>
Run Code Online (Sandbox Code Playgroud)

编辑:问题:

  • 这些依赖关系有什么区别?
  • 我是否需要它们才能使用依赖项并且手头有Javadoc?
  • 将Javadocs包含在开发中的最佳实践是什么?

java dependencies javadoc maven

10
推荐指数
2
解决办法
1万
查看次数

阻止杰克逊改变变量名称的案例

我在Spring中使用Jackson将我的类序列化为JSON.当我像下面的例子一样序列化一个类时,Jackson正在将某些字段的名称从Camel Case更改为小写.我知道我可以通过创建自定义(de)序列化器来解决这个问题,但我希望能够全局关闭它.也许通过在application.properties中设置属性.

根据默认的Jackson命名策略,这不应该发生:

如果没有注册的自定义策略,则使用默认的Java属性命名策略,它将字段名称保留为......

class Foo {
    private final String firstName;
    private final String aName;
    private final String name;
    private final String abName;

    Foo(final String firstName, final String aName, final String name, final String abName) {
        this.firstName = firstName;
        this.aName = aName;
        this.name = name;
        this.abName = abName;
    }
    // Getters here
}

public static void main(String[] args) {
        final ObjectMapper mapper = new ObjectMapper();
        final Foo foo  = new Foo("first", "a", "name", "ab");
        final String jsonInString = …
Run Code Online (Sandbox Code Playgroud)

java jackson spring-boot

8
推荐指数
2
解决办法
3605
查看次数

C++从字符串中删除非ASCII字符

在你开始之前; 是的我知道这是一个重复的问题,是的,我已经查看了发布的解决方案.我的问题是我无法让他们工作.

bool invalidChar (char c)
{ 
    return !isprint((unsigned)c); 
}
void stripUnicode(string & str)
{
    str.erase(remove_if(str.begin(),str.end(), invalidChar), str.end()); 
}
Run Code Online (Sandbox Code Playgroud)

我在"Prusæus,Ægyptians"上测试了这种方法,它也没有做任何我试图替代isprint的方法isalnum

真正的问题发生在我的程序的另一部分我转换string-> wstring-> string.如果string-> wstring转换中有unicode字符,则转换为balks.

参考:

如何从字符串中删除非ASCII字符?(在C#中)

如何从c ++中的字符串中删除所有非字母数字字符?

编辑:

我仍然想删除所有非ASCII字符,无论它是否有帮助,这里是我崩溃的地方:

// Convert to wstring
wchar_t* UnicodeTextBuffer = new wchar_t[ANSIWord.length()+1];
wmemset(UnicodeTextBuffer, 0, ANSIWord.length()+1);
mbstowcs(UnicodeTextBuffer, ANSIWord.c_str(), ANSIWord.length());
wWord = UnicodeTextBuffer; //CRASH
Run Code Online (Sandbox Code Playgroud)

错误对话框

MSVC++调试库

调试断言失败!

Program:// myproject

文件:f:\ dd\vctools\crt_bld\self_x86\crt\src\isctype.c

行://在上面

表达:(无符号)(C + 1)<= 256

编辑:

进一步复杂化问题:我正在读取的.txt文件是ANSI编码的.内部的一切都应该是有效的.

解:

bool invalidChar (char c) 
{  
    return !(c>=0 && c <128);   
} …
Run Code Online (Sandbox Code Playgroud)

c++ string ascii

7
推荐指数
1
解决办法
3万
查看次数

勿让儿童接触:从继承中删除受保护的字段

本着精心设计的OO的精神,我正在扩展的某个类别标志着其中一个领域受到保护.这堂课还慷慨地提供了一个公共的二传手,但没有吸气剂.

我正在使用一个基类来扩展这个类,而基类又由几个孩子扩展.如何限制对我的孩子的受保护变量的访问,同时仍然能够私下操纵它并公开设置它?

见下面的例子:

public abstract class ThirdPartyClass {
  protected Map propertyMap;

  public void setPropertyMap(Map propertyMap){
    this.propertyMap= propertyMap;
  }

  // Other methods that use propertyMap.
}

public abstract class MyBaseClass extends ThirdPartyClass{
// Accessor methods for entries in propertyMap.
  public getFoo(){
    propertyMap.get("Foo");
  }

  public getBar(){
    propertyMap.get("Bar");
  }

 // etc...
}

public class OneOfManyChildren extends MyBaseClass {
// Should only access propertyMap via methods in MyBaseClass.
}
Run Code Online (Sandbox Code Playgroud)

我已经发现,我可以通过使场撤销访问private finalMyBaseClass.然而,这也妨碍了使用超级类提供的setter.

我能够通过下面的"聪明"来规避这种限制,但它也会导致维护相同地图的两个副本以及复制每个元素的O(n)操作.

public abstract class MyBaseClass extends ThirdPartyClass{

  private final …
Run Code Online (Sandbox Code Playgroud)

java inheritance encapsulation

7
推荐指数
2
解决办法
723
查看次数

AssertionFailedError:布尔方法上的null

我正在测试一个方法,它将两个对象作为参数并返回一个boolean.当我使用和assertTrueassertFalse使用相关方法时,我得到以下测试失败:junit.framework.AssertionFailedError: null.

我知道我传递了无效参数,可能会在方法中引起NPE,但这不是正在发生的事情,而是测试失败了.

注意:我使用的boolean不是布尔值.

示例代码:

类:

public class MyClass{
  public boolean foo(MyObject1 lhs, MyObject2 rhs){
    //doSomething
    //return something
  }
}
Run Code Online (Sandbox Code Playgroud)

测试:

.... //initilization of myClass, etc.
@Test
public void testFoo(){
  assertTrue(myClass.foo(new MyObject1(), new MyObject2());
}
Run Code Online (Sandbox Code Playgroud)

java junit assert boolean

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

IntelliJ-更新版权年度

我在IntelliJ中定义了一个版权配置文件,因为Copyright ${today.year}, All Rights Reserved.它在新文件上效果很好,但是在现有文件上,我想将现有年份更新为某个范围,或将现有范围的结束日期更新为${today.year}

IntelliJ支持在版权模板中使用Velocity。有没有办法利用Velocity做到这一点?据我所知,Velocity允许使用if语句,但我不确定如何获得前几年的变量。

例子:

新文件: Copyright 2018

Copyright 2017Copyright 2017-2018

Copyright 2015-2017Copyright 2015-2018

参考:

IntelliJ支持的变量

速度用户指南

velocity intellij-idea webstorm copyright-display

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

部分读取xml文件

我需要从大约100个长达200,000行的XML文件中读取前15行.有没有办法使用像BufferedReader这样的东西来有效地做到这一点?本问题中概述的步骤使用DocumentBuilder.parse(String); 这会尝试立即解析整个文件.

编辑:前15个元素包含有关文件的元数据(页面名称,最后编辑的日期等),我想将其解析为表格.

java xml file-io parsing gosu

4
推荐指数
2
解决办法
5169
查看次数

Ruby Dir.exists?未定义的方法

Dir.exists?文档中查看了该方法,我相信我正确使用它,但在每次调用时我都遇到了这个错误:

未定义的方法`存在?' for Dir:Class(NoMethodError)

我忽略了一些非常明显的东西吗?以下是相关代码.

#!/usr/bin/ruby
ARGV.each do |dir|          # Arguements are directory names.
    if !Dir.exists?(dir)
#dosomething
end
end
Run Code Online (Sandbox Code Playgroud)

编辑:

使用File.directory?而不是Dir.exists?修复我的程序,但没有解释这个错误.

ruby dir nomethoderror

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