(Effective Java) 규칙25. 톱레벨 클래스는 한 파일에 하나만 담으라 소스 파일 하나에 여러 클래스 선언 소스 파일 하나에 톱레벨 클래스를 여러 개 선언하더라도 자바 컴파일러는 불평하지 않는다. 다만, 아무런 득이 없을 뿐더러 심각한 위험을 감수해야 하는 행위다. 한 클래스를 여러 가지로 정의할 수 있으며, 그중 어느 것을 사용할지는 어느 소스 파일을 먼저 컴파일하냐에 따라 달라지기 때문 문제 상황 아래 소스 파일은 Main클래스 하나를 담고 있고, 다른 톱레벨 클래스는 다른 톱레벨 클래스 2개(Utensil과 Dessert)를 참조한다. public class Main { public static void main(String[] args) { System.out.println(Utensi..
들어가며 JavaFX를 사용하면서 UI를 테스트할 일이 종종 있는데 Test Code 상에서 UI를 전시하는 방법에 대해서 소개하고자 한다. 방법 UITest.java public class UITest extends Application { @Test public void test() { launch(); } @Override public void start(Stage primaryStage) throws IOException { //UI 전시 코드 작성 TimerController controller = new TimerController(); primaryStage.setScene(new Scene(controller)); primaryStage.setTitle("Timer Test"); prima..
들어가며 JavaFX를 이용해 실시간으로 업데이트되는 Timer 컨트롤을 구현해보고자 합니다. 원본 소스는 아래 위치에 있습니다. rlawlstjd0077/JavaFxPlayGround Contribute to rlawlstjd0077/JavaFxPlayGround development by creating an account on GitHub. github.com 구현 Timer.fxml 따로 CSS는 없어서 디자인 좀 구립니다.. 시각이 표현될 TextView를 Rectangle을 이용하여 만들어 줍니다. fx:root가 궁금하다면 아래 글 참고
들어가며 .bat(배치파일)로 Java 애플리케이션을 실행하려는데 콘솔창 전시되지 않는 상태로 실행을 하고자 했다. 생각보다 쉽지 않아서 이리저리 찾아보다 괴상한 방법(?)을 알아내었다. 간단하진 않지만 혹시나 필요할 수도 있는 상황이 있을 것 같아 공유하고자 한다. 해결방법 파일은 총 2개가 필요하다. Application을 실행하고자 하는 .bat(배치) 파일 .bat 파일을 실행시키는 .vbs(비주얼 베이직) 파일 Execute.bat D: cd D:\MyProject\Bin java -jar Application.jar NotConsole.vbs Set objShell = CreateObject("Shell.Application") objShell.ShellExecute "Execute.bat"..
(Effective Java) 규칙26. 로 타입은 사용하지 말라 제네릭 타입 클래스와 인터페이스 선언에 타입 매개변수(type parameter)가 쓰일때 이것을 제네릭 클래스, 제네릭 인터페이스라고 한다. 제네릭 클래스, 인터페이스를 통틀어 제네릭 타입이라 함 List 인터페이스는 원소의 타입을 나타내는 타입 매개변수 E를 받음 이 인터페이스는 List지만, 짧게 List라고 자주 씀 제네릭 타입의 특징 각각의 제네릭 타입은 일련의 매개변수화 타입 (parameterized type)을 정의 한다. 먼저 클래스(혹은 인터페이스) 이름이 나오고, 이어서 꺽쇠괄호 안에 실제 타입 매개변수들을 나열함 List은 원소의 타입이 String인 리스트를 뜻하는 매개변수화 타입임 String이 정규(formal)..
(Effective Java) 규칙63. 문자열 연결은 느리니 주의하라 문자열 연결 연산자 문자열 연결 연산자(+)는 여러 문자열을 하나로 합쳐주는 편리한 수단이다. 그런데 작고 크기가 고정된 객체의 문자열 표현을 만들때라면 괜찮지만, 본격적으로 사용하기 시작하면 성능 저하를 감내하기 어렵다. 성능 문제 문자열 연결 연산자로 문자열 n개를 잇는 시간은 n^2에 비례한다. 문자열은 불변(규칙 17)이라서 두 문자열을 연결할 경우 양쪽의 내용을 모두 복사해야 하므로 성능 저하는 피할 수 없는 결과이다. 예) 문자열 연결을 잘못 사용한 예 public String statement() { String result = ""; for (inti = 0; i < numItems(); i++) result +=lin..
(Effective Java) 규칙64. 객체는 인터페이스를 사용해 참조하라 규칙51에서 매개변수 타입을 클래스가 아니라 인터페이스를 사용하라고 했다. 조언을 "객체는 클래스가 아닌 인터페이스로 참조하라"고까지 확장할 수 있음 인터페이스 타입 적합한 인터페이스만 있다면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하라. 객체의 실제 클래스를 사용해야 할 상황은 '오직' 생성자로 생성할 때 뿐임 예) Set 인터페이스를 구현한 LinkedHashSet 변수를 선언 //좋은 예. 인터페이스를 타입으로 사용했다. Set sonSet = new LinkedHashSet(); //나쁜 예. 클래스를 타입으로 사용했다! LinkedHashSet sonSet = new LinkedHashSe..
들어가며 Perl 설치중 Perl MakeFile.PL명령을 실행하니 아래와 같은 오류가 발생했다. Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at [Makefile.PL](http://makefile.pl/) line 7. 해결방법 해결방법은 간단하다. CPAN을 설치해주자. yum install perl-CPAN 끝으로 이 글이 도움이 되었다면, 하단의 Google 광고 👎👎👎 한번씩 클릭 ..
- Total
- Today
- Yesterday
- java
- git
- JavaFX Window Close
- 일본 배낭여행
- 일본 여행
- 이펙티브자바
- springboot
- 배낭여행
- 배낭 여행
- 스프링부트
- 텐트
- intelij
- effective java
- Java UI
- JavaFX 테이블뷰
- windows
- JavaFX 종료
- 자바
- 이펙티브
- JavaFX
- 방통대 과제물
- 일본 자전거 여행
- effectivejava
- 자전거
- JavaFX Table View
- 인텔리제이
- 자전거 여행
- 이펙티브 자바
- TableView
- 일본여행
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |