728x90
반응형

java 178

Java 7에서 다이아몬드 연산자 (<>)를 사용해야 하는 이유

질문 : Java 7에서 다이아몬드 연산자 ()의 요점은 무엇입니까? Java 7의 다이아몬드 연산자는 다음과 같은 코드를 허용합니다. List list = new LinkedList(); 그러나 Java 5/6에서는 간단히 다음과 같이 작성할 수 있습니다. List list = new LinkedList(); 유형 삭제에 대한 나의 이해는 이것들이 정확히 동일하다는 것입니다. (어쨌든 제네릭은 런타임에 제거됩니다). 왜 다이아몬드에 신경을 쓰나요? 어떤 새로운 기능 / 유형 안전성이 허용됩니까? 새로운 기능이 생성되지 않으면 왜 기능으로 언급합니까? 이 개념에 대한 나의 이해에 결함이 있습니까? 답변 문제 List list = new LinkedList(); 왼쪽에서는 일반 유형 List 을 사용하고 ..

Java의 "final" 의 작동 원리

질문 : Java의 "final"키워드는 어떻게 작동합니까? (나는 여전히 개체를 수정할 수 있습니다.) Java에서는 final 키워드를 사용하여 값이 변경되지 않도록 지정합니다. 하지만 클래스의 생성자 / 메서드에서 값을 변경할 수 있음을 알았습니다. 다시 말하지만 변수가 static 이면 컴파일 오류입니다. 다음은 코드입니다. import java.util.ArrayList; import java.util.List; class Test { private final List foo; public Test() { foo = new ArrayList(); foo.add("foo"); // Modification-1 } public static void main(String[] args) { Test t ..

Android UserManager.isUserAGoat () 의 사용시기

질문 : Android UserManager.isUserAGoat ()의 적절한 사용 사례? Android 4.2에 도입 된 새로운 API를 살펴 보았습니다.UserManager 클래스를 보면서 다음 방법을 발견했습니다. public boolean isUserAGoat() 이 호출을하는 사용자가 텔레포트 대상인지 여부를 결정하는 데 사용됩니다. 이 호출을하는 사용자가 염소인지 여부를 반환합니다. 언제 어떻게 사용해야합니까? 답변 안드로이드 R 업데이트: Android R에서 이 메서드는 항상 false를 반환합니다. Google은 이것이 "염소의 개인 정보를 보호하기 위해"수행되었다고 말합니다. /** * Used to determine whether the user making this call is ..

Java에서 현재 stack trace를 얻는 방법

질문 : Java에서 현재 스택 추적을 어떻게 얻을 수 있습니까? Environment.StackTrace 를 수행하는 방법과 같이 Java에서 현재 스택 추적 을 얻는 방법은 무엇입니까? Thread.dumpStack() 찾았지만 원하는 것이 아닙니다. 스택 추적을 다시 가져오고 싶습니다. 답변 Thread.currentThread().getStackTrace() 사용할 수 있습니다. 이는 프로그램의 현재 스택 추적을 나타내는 StackTraceElement 배열을 반환합니다. 출처 : https://stackoverflow.com/questions/1069066/how-can-i-get-the-current-stack-trace-in-java

[오류]JsonMappingException : No suitable constructor found for type [simple type, class ]: can not instantiate from JSON object

질문 : JsonMappingException : [단순 유형, 클래스] 유형에 적합한 생성자가 없습니다. JSON 객체에서 인스턴스화 할 수 없습니다. JSON 요청을 받고 처리하려고 할 때 다음 오류가 발생합니다. org.codehaus.jackson.map.JsonMappingException : No suitable constructor found for type [simple type, class ]: can not instantiate from JSON object (유형 정보를 추가 / 활성화해야합니까?). 보내려는 JSON은 다음과 같습니다. { "applesDO" : [ { "apple" : "Green Apple" }, { "apple" : "Red Apple" } ] } Control..

Android의 MVC 패턴

질문 : Android의 MVC 패턴 Android 용 Java에서 모델-뷰-컨트롤러 패턴을 구현할 수 있습니까? 아니면 이미 활동을 통해 구현 되었습니까? 아니면 Android 용 MVC 패턴을 구현하는 더 좋은 방법이 있습니까? 답변 Android에서는 MVC가 없지만 다음이 있습니다. 해상도, 하드웨어 등에 따라 다양한 XML 파일에 사용자 인터페이스 를 정의합니다. 로케일 등에 따라 다양한 XML 파일에 리소스 를 정의합니다. ListActivity , TabActivity 와 같은 클래스를 확장하고 인플레이터로 XML 파일을 사용합니다. 비즈니스 로직에 대해 원하는만큼 클래스를 만들 수 있습니다. 많은 Utils 가 이미 작성되었습니다-DatabaseUtils, Html. 출처 : https:/..

Java 제네릭이 암시 적으로 다형성이 아닌 이유

질문 : 목록 List의 하위 클래스 ? Java 제네릭이 암시 적으로 다형성이 아닌 이유는 무엇입니까? Java 제네릭이 상속 / 다형성을 처리하는 방법에 대해 약간 혼란 스럽습니다. 다음 계층을 가정합니다. 동물 (부모) 개 - 고양이 (어린이) doSomething(List animals) 메서드가 있다고 가정합니다. 상속 및 다형성의 모든 규칙에 따라 List 가 List 이고 List 이 List 하므로 둘 중 하나를이 메서드에 전달할 수 있습니다. 별로. doSomething(List

Java에서 SoftReference와 WeakReference의 차이점

질문 : Java에서 SoftReference와 WeakReference의 차이점은 무엇입니까? java.lang.ref.WeakReference 와 java.lang.ref.SoftReference 의 차이점은 무엇입니까? 답변 약한 참조 이해 , Ethan Nicholas : 약한 참조 간단히 말해서 약한 참조 는 객체가 메모리에 남아 있도록 할만큼 충분히 강하지 않은 참조입니다. 약한 참조를 사용하면 가비지 수집기의 기능을 활용하여 도달 가능성을 결정할 수 있으므로 직접 수행 할 필요가 없습니다. 다음과 같이 약한 참조를 만듭니다. WeakReference weakWidget = new WeakReference(widget); 그런 다음 코드의 다른 곳에서 weakWidget.get() 을 사용하여..

Java String을 byte []로 변환하는 방법

질문 : Java String을 byte []로 변환하는 방법은 무엇입니까? 자바로 변환 할 수있는 방법이 있나요 String A와 byte[] (안 박스 Byte[] )? 이 시도에서 : System.out.println(response.split("\r\n\r\n")[1]); System.out.println("******"); System.out.println(response.split("\r\n\r\n")[1].getBytes().toString()); 그리고 나는 별도의 출력을 얻고 있습니다. gzip 문자열이므로 첫 번째 출력을 표시 할 수 없습니다. ****** [B@38ee9f13 두 번째는 주소입니다. 내가 뭘 잘못하고 있니? 다음과 같이 gzip 압축 해제기에 제공하려면 byte[] 에..

Java에서 equals 및 hashCode 메소드를 재정의 해야 하는 이유

질문 : Java에서 equals 및 hashCode 메소드를 대체해야하는 이유는 무엇입니까? 최근에이 Developer Works 문서를 읽었습니다. 이 문서는 모두 hashCode() 및 equals() 효과적이고 정확하게 정의하는 것에 관한 것이지만,이 두 가지 메서드를 재정의해야하는 이유를 파악할 수 없습니다. 이러한 방법을 효율적으로 구현하기 위해 어떻게 결정을 내릴 수 있습니까? 답변 Joshua Bloch는 효과적인 자바에 대해 말한다 equals ()를 재정의하는 모든 클래스에서 hashCode ()를 재정의해야합니다. 그렇게하지 않으면 Object.hashCode ()에 대한 일반 계약을 위반하게되어 HashMap, HashSet 및 Hashtable을 포함한 모든 해시 기반 컬렉션과 함..

JavaScript에서 문자열을 정수로 변환하는 방법

질문 : JavaScript에서 문자열을 정수로 변환하는 방법은 무엇입니까? JavaScript에서 문자열을 정수로 어떻게 변환합니까? 답변 가장 간단한 방법은 기본 Number 함수를 사용하는 것입니다. var x = Number("1000") 이것이 작동하지 않으면 parseInt , unary plus , parseFloat with floor 및 Math.round 메서드가 있습니다. parseInt : var x = parseInt("1000", 10); // you want to use radix 10 // so you get a decimal number even with a leading 0 and an old browser ([IE8, Firefox 20, Chrome 22 and old..

iterator를 스트림으로 변환하는 방법

질문 : 반복기를 스트림으로 변환하는 방법은 무엇입니까? Iterator 를 Stream 으로 변환하거나보다 구체적으로 iterator를 스트림으로 "보기"하는 간결한 방법을 찾고 있습니다. 성능상의 이유로 새 목록에서 반복자의 복사본을 피하고 싶습니다. Iterator sourceIterator = Arrays.asList("A", "B", "C").iterator(); Collection copyList = new ArrayList(); sourceIterator.forEachRemaining(copyList::add); Stream targetStream = copyList.stream(); 의견의 몇 가지 제안을 기반으로 Stream.generate 를 사용하려고 시도했습니다. public sta..

개발관련/other 2021.08.28

Jackson with JSON: Unrecognized field, not marked as ignorable

질문 : JSON이있는 Jackson : 인식 할 수없는 필드, 무시할 수없는 것으로 표시됨 특정 JSON 문자열을 Java 개체로 변환해야합니다. JSON 처리를 위해 Jackson을 사용하고 있습니다. 입력 JSON을 제어 할 수 없습니다 (웹 서비스에서 읽음). 이것은 내 입력 JSON입니다. {"wrapper":[{"id":"13","name":"Fred"}]} 다음은 간단한 사용 사례입니다. private void tryReading() { String jsonStr = "{\"wrapper\"\:[{\"id\":\"13\",\"name\":\"Fred\"}]}"; ObjectMapper mapper = new ObjectMapper(); Wrapper wrapper = null; try { w..

Java에서 SuppressWarnings ( "unchecked")의 의미

질문 : Java에서 SuppressWarnings ( "선택 취소") 란 무엇입니까? 때때로 코드를 살펴볼 때 많은 메서드가 주석을 지정하는 것을 볼 수 있습니다. @SuppressWarnings("unchecked") 이것은 무엇을 의미 하는가? 답변 때때로 자바 제네릭은 당신이 원하는 것을 할 수 없게하고, 당신이하고있는 일이 실제로 실행 시간에 합법적 이라는 것을 컴파일러에게 효과적으로 알려줄 필요가 있습니다. 일반적으로 일반적인 인터페이스를 조롱 할 때 이것이 고통 스럽지만 다른 예도 있습니다. 그것은 경고를 피하는 것이 아니라 그것을 억제하는 방법을 해결하려고 노력 일반적으로 가치가합니다 ( 자바 제네릭 FAQ는 여기에 있습니다)하지만 때로는 그것이 가능하다면, 그것은 너무 많은 경고를 억제하..

자바에서 List<Integer>를 int[]로 변환하는 방법?

질문 : 목록을 변환하는 방법 자바에서 int []로? 이것은 다음 질문과 유사합니다. Java에서 int []를 Integer []로 변환하는 방법? 저는 Java를 처음 사용합니다. Java에서 List 를 int[] 로 어떻게 변환 할 수 있습니까? List.toArray() 실제로 Object[] 반환하기 때문에 혼란 스럽습니다. 이는 Integer[] 또는 int[] 로 캐스트 될 수 있습니다. 지금은 루프를 사용하고 있습니다. int[] toIntArray(List list){ int[] ret = new int[list.size()]; for(int i = 0;i < ret.length;i++) ret[i] = list.get(i); return ret; } 이 작업을 수행하는 더 좋은 방법..

java.util.Date를 java.sql.Date로 변환하는 방법

질문 : java.util.Date를 java.sql.Date로 변환하는 방법? java.util.Date 를 입력으로 사용하고 쿼리를 생성하려고합니다. java.sql.Date 암시 적으로 또는 명시 적으로 변환을 수행 할 수 없다는 사실에 놀랐습니다.하지만 Java API가 여전히 나에게 상당히 새롭기 때문에 어떻게 해야할지 모르겠습니다. 답변 java.util.Date를 java.sql.Date로 변환하는 방법? 하지마. 두 클래스 모두 구식입니다. JDBC 4.2 이상에서 레거시 java.util.Date 및 java.sql.Date대신 java.time 클래스를 사용하십시오. 아직 java.time으로 업데이트되지 않은 코드와 상호 운용되는 경우 java.time으로 /에서 변환합니다. Prep..

DEX를 Java 소스 코드로 디컴파일

질문 : DEX를 Java 소스 코드로 디 컴파일 Android DEX (VM 바이트 코드) 파일을 해당 Java 소스 코드로 디 컴파일하려면 어떻게해야합니까? 답변 다음 도구를 얻으십시오. dex2jar 를 사용하여 dex 파일을 jar 파일로 변환 jar의 Java 파일을 보려면 jd-gui 소스 코드는 dex2jar가 일부 최적화를 수행하므로 매우 읽기 쉽습니다. 디 컴파일 방법에 대한 절차는 다음과 같습니다. test_apk-debug.apk의 classes.dex를 test_apk-debug_dex2jar.jar로 변환하십시오. d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk d2j-dex2jar.sh -f -o output_jar.jar d..

Java에서 String을 long으로 변환하는 방법

질문 : Java에서 문자열을 long으로 변환하는 방법은 무엇입니까? Java에서 간단한 질문이 있습니다. Long.toString() 에서 얻은 String long 어떻게 변환 할 수 있습니까? 답변 Long.parseLong() Long.parseLong("0", 10) // returns 0L Long.parseLong("473", 10) // returns 473L Long.parseLong("-0", 10) // returns 0L Long.parseLong("-FF", 16) // returns -255L Long.parseLong("1100110", 2) // returns 102L Long.parseLong("99", 8) // throws a NumberFormatException L..

자바 8 List<V>를 Map<K, V>로 변환 하는 방법

질문 : 자바 8 목록 지도로 Java 8의 스트림과 람다를 사용하여 객체 목록을 맵으로 변환하고 싶습니다. 이것이 Java 7 이하에서 작성하는 방법입니다. private Map nameMap(List choices) { final Map hashMap = new HashMap(); for (final Choice choice : choices) { hashMap.put(choice.getName(), choice); } return hashMap; } Java 8과 Guava를 사용하여 쉽게 수행 할 수 있지만 Guava없이 수행하는 방법을 알고 싶습니다. 구아바 : private Map nameMap(List choices) { return Maps.uniqueIndex(choices, new Fu..

java.net.URLConnection을 사용하여 HTTP 요청을 실행하고 처리하는 방법

질문 : java.net.URLConnection을 사용하여 HTTP 요청을 실행하고 처리하는 방법은 무엇입니까? java.net.URLConnection 사용은 여기에서 자주 묻는 질문이며 Oracle 자습서 는 이에 대해 너무 간결합니다. 이 튜토리얼은 기본적으로 GET 요청을 실행하고 응답을 읽는 방법 만 보여줍니다. POST 요청을 수행하고, 요청 헤더를 설정하고, 응답 헤더를 읽고, 쿠키를 처리하고, HTML 양식을 제출하고, 파일을 업로드하는 데 사용하는 방법은 어디에도 설명되어 있지 않습니다. 그렇다면 어떻게 java.net.URLConnection 을 사용하여 "고급"HTTP 요청을 실행하고 처리 할 수 있습니까? 답변 먼저 면책 조항 : 게시 된 코드 스 니펫은 모두 기본적인 예입니다. ..

Java에서 폴더의 모든 파일을 읽는 방법

질문 : Java에서 폴더의 모든 파일을 읽는 방법은 무엇입니까? Java를 통해 폴더의 모든 파일을 읽는 방법은 무엇입니까? 답변 public void listFilesForFolder(final File folder) { for (final File fileEntry : folder.listFiles()) { if (fileEntry.isDirectory()) { listFilesForFolder(fileEntry); } else { System.out.println(fileEntry.getName()); } } } final File folder = new File("/home/you/Desktop"); listFilesForFolder(folder); Files.walk API는 Java 8에서 ..

Java를 사용하여 줄 단위로 큰 텍스트 파일을 읽는 방법

질문 : Java를 사용하여 줄 단위로 큰 텍스트 파일을 어떻게 읽을 수 있습니까? Java를 사용하여 줄 단위로 약 5-6GB의 큰 텍스트 파일을 읽어야합니다. 어떻게 빨리 할 수 있습니까? 답변 일반적인 패턴은 try (BufferedReader br = new BufferedReader(new FileReader(file))) { String line; while ((line = br.readLine()) != null) { // process the line. } } 문자 인코딩이 없다고 가정하면 데이터를 더 빨리 읽을 수 있습니다. 예를 들어 ASCII-7이지만 큰 차이는 없습니다. 데이터로 수행하는 작업이 훨씬 더 오래 걸릴 가능성이 높습니다. line 누출 범위를 피하는 덜 일반적인 패턴입니..

Java에서 싱글 톤 패턴을 구현하는 효율적인 방법

질문 : Java에서 싱글 톤 패턴을 구현하는 효율적인 방법은 무엇입니까? Java에서 싱글 톤 패턴을 구현하는 효율적인 방법은 무엇입니까? 답변 enum 사용 : public enum Foo { INSTANCE; } Joshua Bloch는 Google I / O 2008의 Effective Java Reloaded 강연 : link to video 에서이 접근 방식을 설명했습니다. 또한 그의 프레젠테이션 슬라이드 30-32를 참조하십시오 ( effective_java_reloaded.pdf ). 직렬화 가능한 싱글턴을 구현하는 올바른 방법 public enum Elvis { INSTANCE; private final String[] favoriteSongs = { "Hound Dog", "Heartb..

Java에서 2 * (i * i)가 2 * i * i보다 빠른 이유

질문 : Java에서 2 * (i * i)가 2 * i * i보다 빠른 이유는 무엇입니까? 다음 Java 프로그램은 실행하는 데 평균 0.50 초에서 0.55 초가 걸립니다. public static void main(String[] args) { long startTime = System.nanoTime(); int n = 0; for (int i = 0; i < 1000000000; i++) { n += 2 * (i * i); } System.out.println((double) (System.nanoTime() - startTime) / 1000000000 + " s"); System.out.println("n = " + n); } 2 * (i * i) 를 2 * i * i 바꾸면 실행하는 데 0...

JavaScript에서 변수가 배열인지 확인 하는 방법

질문 : JavaScript에서 변수가 배열인지 어떻게 확인합니까? 변수가 JavaScript에서 배열인지 단일 값인지 확인하고 싶습니다. 가능한 해결책을 찾았습니다 ... if (variable.constructor == Array)... 이것이 최선의 방법입니까? 답변 ㅁㅁ 변수가 배열인지 확인하는 방법에는 여러 가지가 있습니다. 최상의 솔루션은 선택한 솔루션입니다. variable.constructor === Array 이것은 Chrome 및 대부분의 다른 모든 브라우저에서 가장 빠른 방법입니다. 모든 배열은 객체이므로 생성자 속성을 확인하는 것은 JavaScript 엔진의 빠른 프로세스입니다. 객체 속성이 배열인지 확인하는 데 문제가있는 경우 먼저 속성이 있는지 확인해야합니다. variable.p..

728x90
반응형