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, as
in.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
- 그
using
키워드는 유감스럽게도 목록에 포함되지 않습니다. - 또한 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
'source' 카테고리의 다른 글
MySQL OR과 IN의 퍼포먼스 비교 (0) | 2022.12.25 |
---|---|
Eclipse는 왜 @Override on interface methods에 대해 불평하는가? (0) | 2022.12.25 |
근거가 약한 레퍼런스에 대한 실용적인 용도가 있습니까? (0) | 2022.11.25 |
PHP에 가장 적합한 PDF-API는 무엇입니까? (0) | 2022.11.25 |
베스트 프랙티스인 Vue 인스턴스를 생성할 때의 차이와 각 옵션을 언제 사용할지 이해하는 데 도움이 필요합니까? (0) | 2022.11.25 |