source

Java에는 사용 설명서가 있습니까?

goodcode 2022. 12. 25. 11:13
반응형

Java에는 사용 설명서가 있습니까?

Java에는 휴지 상태일 때 세션을 열 때 사용할 수 있는 사용 설명서가 있습니까?

C#에서는 다음과 같습니다.

using (var session = new Session())
{


}

따라서 개체는 범위를 벗어나 자동으로 닫힙니다.

Java 7은 이 기능을 Java 플랫폼에 제공하는 자동 리소스 블록 관리를 도입했습니다.이전 버전의 Java에는 다음과 같은 기능이 없었습니다.using.

를 들어, 「」를 실장하고 있는 임의의 할 수 .java.lang.AutoCloseable하다

try(ClassImplementingAutoCloseable obj = new ClassImplementingAutoCloseable())
{
    ...
}

의 ★★★java.io.Closeable 구현되며 자동으로 됩니다.AutoCloseable할 수 있습니다.try C#에서 한 방법으로 차단합니다.using 이것은 C의 록에 합니다. C#로 하다using.

버전 5.0에서는 휴지 상태 세션이 구현되어 ARM 블록 내에서 자동으로 닫힐 수 있습니다.이전 버전의 휴지 상태 세션에서는 구현되지 않았습니다.따라서 이 기능을 사용하려면 최대 절전 모드 > = 5.0이 필요합니다.

Java 7 이전에는 Java에 이러한 기능이 없었습니다(Java 7 이상은 ARM에 관한 Asaph의 답변참조하십시오).

수작업으로 해야 하는 번거로움이 있었습니다.

AwesomeClass hooray = null;
try {
  hooray = new AwesomeClass();
  // Great code
} finally {
  if (hooray!=null) {
    hooray.close();
  }
}

다 안 될 때 // Great code 않다hooray.close()어떤 예외도 발생시킬 수 있습니다.

변수의 범위만 제한하려는 경우 단순 코드 블록이 다음 작업을 수행합니다.

{
  AwesomeClass hooray = new AwesomeClass();
  // Great code
}

하지만 아마 그런 뜻이 아닐 거예요.

Java 7부터는 http://blogs.oracle.com/darcy/entry/project_coin_updated_arm_spec를 이용하실 수 있습니다.

질문의 코드 구문은 다음과 같습니다.

try (Session session = new Session())
{
  // do stuff
}

:Session또는 그 (다수의) 서브 인터페이스 중 하나를 실장할 필요가 있습니다.

기술적으로는:

DisposableObject d = null;
try {
    d = new DisposableObject(); 
}
finally {
    if (d != null) {
        d.Dispose();
    }
}

가장 가까운 Java는 다음과 같습니다.

AwesomeClass hooray = new AwesomeClass();
try{
    // Great code
} finally {
    hooray.dispose(); // or .close(), etc.
}

지금으로선 아니야.

그러나 Java 7에 대한 ARM의 제안이 있습니다.

자원 관리에 관심이 있는 경우 Project Lombok에서 주석을 제공합니다.사이트에서 직접 가져온 사진:

하시면 됩니다.@Cleanup코드 실행 경로가 현재 범위를 벗어나기 전에 지정된 리소스가 자동으로 정리되도록 합니다.은 임의의 됩니다.@Cleanup다음과 같이 합니다.

@Cleanup InputStream in = new FileInputStream("some/file");

결과적으로, 과, 결 ,, 신 한 위 날 , 가 때 끝 as범 a,', in of youre at the result속 the그 scope이당 end, asin.close()전화 주문 부서 부탁드립니다.됩 이 전화는 시도/최고의 방법으로 실행되어야 한다.이 콜은 반드시 시행/최종 구축을 통해 실행됩니다.이 작업을 보려면 아래의 예를 들어 보세요.다음 예에서 이 기능의 구조를 확인하십시오.

정리하려는 개체 유형이 없습니다.close()그러나 다른 방법이 없지만, 어떤 방법으로 이 방법의 이름을 지정할 수 있습니다.

@Cleanup("dispose") org.eclipse.swt.widgets.CoolBar bar = new CoolBar(parent, 0);

디폴트로는 정리방법은 다음과 같이 상정되어 있습니다.close(). 인수를 사용하는 정리 메서드는 를 통해 호출할 수 없습니다.@Cleanup.

바닐라 자바

import java.io.*;

public class CleanupExample {
  public static void main(String[] args) throws IOException {
    InputStream in = new FileInputStream(args[0]);
    try {
      OutputStream out = new FileOutputStream(args[1]);
      try {
        byte[] b = new byte[10000];
        while (true) {
          int r = in.read(b);
          if (r == -1) break;
          out.write(b, 0, r);
        }
      } finally {
        out.close();
      }
    } finally {
      in.close();
    }
  }
}

롬복과 함께

import lombok.Cleanup;
import java.io.*;

public class CleanupExample {
  public static void main(String[] args) throws IOException {
    @Cleanup InputStream in = new FileInputStream(args[0]);
    @Cleanup OutputStream out = new FileOutputStream(args[1]);
    byte[] b = new byte[10000];
    while (true) {
      int r = in.read(b);
      if (r == -1) break;
      out.write(b, 0, r);
    }
  }
}

아니요, Java에는 없습니다.using스테이트먼트에 상당합니다.

Java 8에서는 try를 사용할 수 있습니다.아래 페이지를 참조해 주세요.http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

Java 키워드 목록을 참조하십시오.

  1. using키워드는 유감스럽게도 목록에 포함되지 않습니다.
  2. 또한 C#과 동등하지 않습니다.using현재 Java에서는 다른 키워드를 사용하여 키워드를 지정합니다.

그런 흉내를 내다"using"동작, 사용하셔야 합니다.try...catch...finally블록: 여기서 리소스를 폐기할 수 있습니다.finally.

프로젝트 코인의 ARM 블록은 Java 7에 있습니다.이 기능은 와 같은 기능을 Java에 제공하는 것을 목적으로 하고 있습니다.구문을 사용한 넷.

자동으로 변수를 닫거나 표시하는 것이 아니라 변수의 범위를 제한하는 것에 대한 질문에 답합니다.

Java에서는 괄호를 사용하여 닫힌 익명 스코프를 정의할 수 있습니다.아주 간단합니다.

{
   AwesomeClass hooray = new AwesomeClass()
   // Great code
}

변수hooray는 이 범위 내에서만 사용할 수 있으며 외부에서는 사용할 수 없습니다.

이것은 일시적인 반복 변수가 있는 경우에 유용합니다.

예를 들어 각각 인덱스가 있습니다.그 때처럼item변수가 for 루프를 통해 닫힙니다(즉, 변수 내에서만 사용 가능).index변수는 익명 범위에서 닫힙니다.

// first loop
{
    Integer index = -1;
    for (Object item : things) {index += 1;
        // ... item, index
    }
}

// second loop
{
    Integer index = -1;
    for (Object item : stuff) {index += 1;
        // ... item, index
    }
}

또한 변수 범위를 제공하는 for 루프가 없지만 범용 변수 이름을 사용해야 하는 경우에도 이 기능을 사용합니다.

{
    User user = new User();
    user.setId(0);
    user.setName("Andy Green");
    user.setEmail("andygreen@gmail.com");
    users.add(user);
}

{
    User user = new User();
    user.setId(1);
    user.setName("Rachel Blue");
    user.setEmail("rachelblue@gmail.com");
    users.add(user);
}

언급URL : https://stackoverflow.com/questions/2016299/does-java-have-a-using-statement

반응형