728x90
두 변수가 같은지 비교 할 수 있는 연산자 : 클래스 명만 같은지 비교
package kr.or.ksmart;
class MemberDto{
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public int hashCode() {
final int prime = 31; //주소값
int result = 1;
result = prime * result + ((age == null) ? 0 : age.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode()); // 해쉬코드가 들어가있는데 연산을 함
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MemberDto other = (MemberDto) obj; //객체도 비교하면서 object도 비교함
if (age == null) {
if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
class MemberDto2{
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
public class JavaBasic01 {
public static void main(String[] args) {
/**
* instanceof 연산자
* 두 변수가 같은지 비교 할 수 있는 연산자 : 클래스 명만 같은지 비교
*/
System.out.println((m1 instanceof MemberDto) + " <- instanceof");
try {
//Class class는 클래스의 메타정보 (jvm에서 활용 등), Class.forName 사용시 인수에 해당되는 네임스페이스, 클래스는 메모리에 등록된
Class getClass = Class.forName("kr.or.ksmart.TestClass");
System.out.println(getClass.getName());
System.out.println(getClass.hashCode());
//동적으로 객체화
/**
* Class 클래스 내의 newInstance 메서드를 활용하여 동적 인스턴스화
* object 타입으로 결과값 나온다.
*/
Object mObject = getClass.newInstance();
//동적 인스턴스화된 결과를 다운 캐스팅
//instanceof 연산자로 비교
if(mObject instanceof TestClass) {
TestClass t = (TestClass) mObject;
//다운 캐스팅 된 객체를 적접 활용
t.setName("홍길동");
System.out.println(t.getName());
}
}catch(ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
반응형
'Backend > JAVA' 카테고리의 다른 글
MVC (model view controller) 패턴 (0) | 2020.05.13 |
---|---|
JAVA 인터페이스 interface (0) | 2020.04.29 |
JAVA equals( ) 메서드 (0) | 2020.04.29 |
JAVA - hashCode( ) (0) | 2020.04.29 |
JAVA 추상 클래스 (0) | 2020.04.27 |
댓글