복붙노트

[SCALA] 자바에서 scala.None 액세스

SCALA

자바에서 scala.None 액세스

어떻게 자바에서 scala.None 액세스 할 수 있습니까?

마지막 행은 "유형 scala.None 매개 변수를 고려하지 않습니다"로 죽을 컴파일러가.

import scala.Option;
import scala.Some;
import scala.None;
final Option<String> object1 = new Some<String>("Hi there");
final Option<String> object2 = new None<String>();

이것은 ") (기호 생성자 없음을 찾을 수 없습니다"와 함께 실패

final Option<String> object2 = new None();

이 "기호 변수 없음을 찾을 수 없습니다"와 함께 실패

final Option<String> object2 = None;

2007 년에이 작업에 사용하지만 스칼라가 변경되었습니다. 호환되지 않는 유형 : 자바 컴파일러는 오류를 제공합니다 :

final Option<String> object2 = scala.None$.MODULE$;

해결법

  1. ==============================

    1.이 힘 작업 :

    이 힘 작업 :

    final scala.Option<String> x = scala.Option.apply(null);
    
  2. ==============================

    2.스칼라 2.10.2을 (하지 않도록 어떤 버전에서이에 왔을 때) 사용 :

    스칼라 2.10.2을 (하지 않도록 어떤 버전에서이에 왔을 때) 사용 :

    final Option<String> none = Option.empty();
    
  3. ==============================

    3.그게 아니라면 너무 좋은 점을 넣어하지만 특정 상황에서 발생되지 하듯 하나는, 정적 전달자에 의존해서는 안됩니다. 예를 들어, 일부는 객체 동반자 정적 전달자가 없습니다.

    그게 아니라면 너무 좋은 점을 넣어하지만 특정 상황에서 발생되지 하듯 하나는, 정적 전달자에 의존해서는 안됩니다. 예를 들어, 일부는 객체 동반자 정적 전달자가 없습니다.

    객체의 동반자에 대한 방법에 액세스하는 현재의 방법은 이것이다 :

    final scala.Option<String> x = scala.Option$.MODULE$.apply(null);
    

    옵션 $ 옵션의 대상 동반자를위한 클래스입니다. 모듈 $은 (즉, 객체의 동반자) 옵션 $의 유일한 인스턴스를 포함하는 마지막 공공 정적 필드입니다.

  4. ==============================

    4.당신은 가져올 수 있습니다

    당신은 가져올 수 있습니다

    import scala.compat.java8.OptionConverters;
    

    그리고:

    OptionConverters.<YourType>toScala(Optional.empty())
    
  5. ==============================

    5.당신은 다음 (나는 그것을 테스트하고 스칼라 2.9.1와 자바 1.6와 나를 위해 잘 작동) 할 수 있습니다 :

    당신은 다음 (나는 그것을 테스트하고 스칼라 2.9.1와 자바 1.6와 나를 위해 잘 작동) 할 수 있습니다 :

     final Option<String> obj1 = Some.apply(null) // This will give you a None;
     System.out.println(obj1.getClass()); // will print "class scala.None$
    
     final Option<String> obj2 = Some.apply("Something");
     System.out.println(obj2.getClass()); //will print "class scala.Some
    
  6. ==============================

    6.스칼라 버전 2.11.4 내 경우에서 근무 유일한를 사용했다

    스칼라 버전 2.11.4 내 경우에서 근무 유일한를 사용했다

    Option<String> maybeAmount = (amount != MISSING_STOCKAMOUNT) 
    ? Some.apply(amount+"") : Option.<String>apply(null); // can you feel the pain??
    

    업데이트 : 일 이후 ...

    Option.apply(null);
    

    형식 매개 변수없이 예상대로, 너무 작업을 수행합니다. 어떤 이유로 내가 IntelliJ에 내 첫 번째 시도에서 코드를 컴파일 할 수 없었다. 나는 보조 형 매개 변수를 전달했다. 이제, 그냥 물어 보지 않는 때문에 컴파일

  7. from https://stackoverflow.com/questions/9059511/accessing-scala-none-from-java by cc-by-sa and MIT license