小编Sot*_*lis的帖子

为什么Collections.swap将目标列表分配给原始类型的变量?

在JDK 1.6的源代码中,Collections类的swap方法如下所示:

public static void swap(List<?> list, int i, int j) {
    final List l = list;
    l.set(i, l.set(j, l.get(i)));
}
Run Code Online (Sandbox Code Playgroud)

创建传递列表的最终副本的原因是什么?他们为什么不直接修改传递的列表?在这种情况下,您还会获得原始类型警告.

java

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

如何在Spring中定义String数组的bean(使用XML配置)

我正在尝试定义类型的Spring bean,String[]现在能够找到一种方法.示例程序如下所示:

@Component("sampleClass")
public class SampleClass {
    @Value("#{someArrayId}")
    private String[] someArray;

    public void doWithArray() {
        System.out.println(Arrays.toString(someArray));
    }
}
Run Code Online (Sandbox Code Playgroud)

Spring XML配置

<context:annotation-config />
<context:component-scan base-package="com.demo.spring" />

<util:list id="someArrayId">
    <array>
        <value>Tiger</value>
        <value>Lion</value>
    </array>
</util:list>
Run Code Online (Sandbox Code Playgroud)

当我运行该程序时,我得到以下异常:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sampleClass': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private java.lang.String[] com.demo.spring.SampleClass.someArray; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert value of type 'java.util.ArrayList' to required type 'java.lang.String[]'; nested exception is …
Run Code Online (Sandbox Code Playgroud)

java spring

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

使用Oracle SQL,如何输出星期几和星期几?

使用Oracle SQL,如何为以下内容创建结果集:

  • 本周日数(1-7)
  • 当天的名字(星期一,星期二,星期三等)

例如:

DAY   NAME
1     Monday
2     Tuesday
3     Wednesday
4     Thursday
5     Friday
6     Saturday
7     Sunday

sql oracle

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

处理IllegalThreadStateException

import java.io.*;
class Sysexecute
{
    public static void main(String args[]) throws IOException,InterruptedException,IllegalThreadStateException
    {
        Runtime rt= Runtime.getRuntime();
        Process p=rt.exec("ls");
        System.out.println(p.exitValue());
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在学习如何在java中执行系统命令,并发生此错误.我尝试使用抛出来否定它但没有用.请解释原因和解决方案

actual error:-
Exception in thread "main" java.lang.IllegalThreadStateException: process hasn't exited
    at java.lang.UNIXProcess.exitValue(UNIXProcess.java:270)
    at Sysexecute.main(Sysexecute.java:8)
Run Code Online (Sandbox Code Playgroud)

java

11
推荐指数
2
解决办法
9306
查看次数

不可分裂的分裂器

我试图了解它是如何Spliterator工作的,以及如何设计分裂器.我认识到这trySplit()可能是更重要的方法之一Spliterator,但是当我看到一些第三方Spliterator实现时,有时我会看到他们的分裂器trySplit()无条件地返回null .

问题:

  1. 普通迭代器和Spliterator无条件返回null 之间有区别吗?看起来这样的分裂者似乎击败了分裂.
  2. 当然,有一些合法的分裂器用例有条件地返回null trySplit(),但是有一个无条件返回null的分裂器的合法用例吗?

java java-8 spliterator

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

lambda表达式中的错误返回类型

以下代码在IntelliJ和Eclipse中编译良好,但JDK编译器1.8.0_25抱怨.一,代码.

import java.util.function.Predicate;

public abstract class MyStream<E> {

  static <T> MyStream<T> create() {
    return null;
  }

  abstract MyStream<E> filter(MyPredicate<? super E> predicate);

  public interface MyPredicate<T> extends Predicate<T> {

    @Override
    boolean test(T t);
  }

  public void demo() {
    MyStream.<Boolean> create().filter(b -> b);
    MyStream.<String> create().filter(s -> s != null);
  }
}
Run Code Online (Sandbox Code Playgroud)

javac 1.8.0_25的输出是:

MyStream.java:18: error: incompatible types: incompatible parameter types in lambda expression
    MyStream.<Boolean> create().filter(b -> b);
                                       ^
MyStream.java:18: error: incompatible types: bad return type in lambda expression
    MyStream.<Boolean> create().filter(b -> b); …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8

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

未找到接口 com.example.demo.models.IPerson 的主要或单个唯一构造函数

我正在尝试调用我的后端并设置了一个像这样的简单控制器。

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String Hello(IPerson person) {
        return person.sayHello();
    }
}
Run Code Online (Sandbox Code Playgroud)

IPerson是一个接口如下

package com.example.demo.models;

public interface IPerson {

    default String sayHello() {
        return "Hey There";
    }

}
Run Code Online (Sandbox Code Playgroud)

我已经将接口实现为

package com.example.demo.models;

import lombok.Builder;

@Builder
public class Person implements IPerson{

    String name;
    String age;

}
Run Code Online (Sandbox Code Playgroud)

当我将控制器中的参数更改为接口的实现时,调用起作用,即

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String Hello(Person person) {
        return person.sayHello();
    }
}
Run Code Online (Sandbox Code Playgroud)

在使用 IPerson 作为参数调用该函数时,出现以下错误。

java.lang.IllegalStateException: No primary or single unique constructor found for interface com.example.demo.models.IPerson
    at org.springframework.beans.BeanUtils.getResolvableConstructor(BeanUtils.java:267) …
Run Code Online (Sandbox Code Playgroud)

java interface spring-mvc

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

构造函数调用中的类型参数的目的是什么?

在Java规范(http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.9)中,new具有以下形式:

ClassInstanceCreationExpression ::=
| new TypeArguments_opt TypeDeclSpecifier TypeArgumentsOrDiamond_opt
    ( ArgumentListopt ) ClassBodyopt
| Primary . new TypeArguments_opt Identifier TypeArgumentsOrDiamond_opt
    ( ArgumentListopt ) ClassBodyopt
Run Code Online (Sandbox Code Playgroud)

新的后面的第一个可选类型参数列表的目的是什么?我无法从我对15.9节的阅读中找到它(对类型参数列表的所有引用似乎都引用了类型/标识符之后的列表).测试标准Java编译器上的随机位会产生令人困惑的结果:

public class Foo<T> { }
// ...
Foo<Integer> t1 = new <Integer> Foo<Integer>();  // works
Foo<Integer> t2 = new <Integer> Foo();           // works -- unchecked warning missing the type arg after Foo
Foo<Integer> t3 = new <Boolean> Foo<Integer>();  // works
Foo<Integer> t4 = new <Float, Boolean> Foo<Integer>();  // works
Foo<Integer> t5 = new <NotDefined> …
Run Code Online (Sandbox Code Playgroud)

java

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

Spring注释@Autowired内部方法

@Autowired 可以与构造函数,setter和类变量一起使用.

如何@Autowired在方法或任何其他范围内使用注释.我尝试了以下,但它产生编译错误.例如

public classs TestSpring {  
  public void method(String param){  
    @Autowired
    MyCustomObjct obj; 

    obj.method(param);
  }
}  
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的,还有其他方法可以实现吗?(我用过Spring 4.)

java spring dependency-injection

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

如何在Java8中编程monadicaly同时获得可比性能?

Java 8中的monadic编程是否更慢?下面是我的测试(使用右偏置的Either为每次计算创建新实例).命令式版本快1000倍.如何在Java8中编程monadicaly同时获得可比性能?

Main.java

public class Main {

    public static void main(String args[]){
        Main m = new Main();
        m.work();
        m.work2();
    }


    public void work(){
        final long start = System.nanoTime();
        final Either<Throwable,Integer> result =
                Try(this::getInput).flatMap((s) ->
                Try(this::getInput).flatMap((s2) ->
                parseInt(s).flatMap((i) ->
                parseInt(s2).map((i2) ->
                i + i2
                ))));
        final long end = System.nanoTime();
        result.map(this::println).leftMap(this::println);
        System.out.println((end-start)/1000+"us to execute");
    }

    public void work2(){
        Object result;
        final long start = System.nanoTime();
        try {
            final String s = getInput();
            final String s2 = getInput();

            final int i = …
Run Code Online (Sandbox Code Playgroud)

java monads performance either java-8

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