학원에서 학습한 내용을 개인정리한 글입니다.
public static void main(String[] args) {
//빌더 패턴에 대해 알아보자
//내부 클래스를 이용해서 생성하는 방식
// Student s = new Student();
Student t = Student.builder()
.name("김ㅇㅇ")
.height(180.5)
.build();
}
package com.extra.model.vo;
public class Student {
private String name;
private int age;
private double height;
private String address;
private char gender;
private Student() {
}
private Student(String name, int age, double height, String address, char gender) {
this.name = name;
this.age = age;
this.height = height;
this.address = address;
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
//내부 클래스로 생성하는 로직을 작성
public static class Builder {
private String name;
private int age;
private double height;
private String address;
private char gender;
public Builder() {}
public Builder name(String value) {
this.name = value;
return this;
}
public Builder age(int value) {
this.age = value;
return this;
}
public Builder height(double value) {
this.height = value;
return this;
}
public Builder address(String value) {
this.address = value;
return this;
}
public Builder gender(char value) {
this.gender = value;
return this;
}
public Student build() {
return new Student(name, age, height, address, gender);
}
}
public static Builder builder() {
return new Builder();
}
}
public enum Gender {
A("중성"), M("남자"), F("여자");
private String value;
private Gender(String value) {
this.value = value;
}
public String getGender() {
return value;
}
}
package com.extra.common;
public enum StudentController {
controller;
private MainView view = MainView.view;
public void mainMenu() {
System.out.println("main");
view.mainMenu();
}
public void insertStudent() {
System.out.println("insert");
view.insertStudent();
}
}
package com.extra.common;
import java.util.Scanner;
public enum MainView {
view;
private Scanner sc = new Scanner(System.in);
public void mainMenu() {
System.out.println("mainmenu");
}
public void insertStudent() {
System.out.println("insert");
}
}
package com.extra.model.vo;
public record Animal(String name, int age, double weight) {
@Override
public String toString() {
return name + "," + age + "," + weight;
}
}
Animal a = new Animal("덕만", 7, 5.4);
Animal a2 = new Animal("김춘식", 5, 5.5);
Animal a3 = new Animal("김춘식", 5, 5.5);
System.out.println(a2);
System.out.println(a.equals(a2));
System.out.println(a3.equals(a2));
Set<Animal> set = new HashSet<Animal>();
set.add(a);
set.add(a2);
set.add(a3);
System.out.println(set);
//필드값 가져오기
System.out.println(a.name());
var name = "ooo";
var age = "19";
List<Integer> numbers = List.of(1,2,3,4,5,6,7);
for(var n : numbers) {
}
Object o = new String("switch");
swtich(o){
case String s ->{System.out.println(s.length()});
case Integer i ->{}
default () -> {throw new IllegalAccessException});
}
Class studentClass = s.getClass();
String path = studentClass.getResource("/").getPath();
System.out.println(path);
System.out.println(studentClass.getName());
//클래스에 선언된 메소드, 필드, 어노테이션
Method[] methods = studentClass.getDeclaredMethods();
for(var method: methods) {
System.out.println(method.getName());
System.out.println(method.getModifiers());
Class re = method.getReturnType();
System.out.println(re.getName());
}
💡
Temi: 리플렉션을 사용하면서 생각한건데, 코딩에서 프라이빗 멤버를 사용하는 것이 코드 보안에 어떤 이점을 주는지? 프라이빗 멤버에 기본적으로 접근할 수 없도록 제한하는 것이 보안에 어떻게 도움이 되는지도 궁금
Teacher: 정보은닉, 정보제한 및 데이터의 직접접근 및 이상한 데이터가 들어가는 것을 막을 위함임. 리플렉션은 프라이빗을 접근가능하게 허용한다던지 하는 문제때문에 잘 쓰지않음. 그리고 느림.