나는 Bloch의 Effective Java를 읽었으며 Generics 장에서 "신원 기능"에 대해 이야기하는 한 섹션 만있었습니다. "신원 기능"이라는 프로그래밍 용어는 신원 정보와 무슨 관련이 있습니까? (Java 지향)
public interface UnaryFunction<T> {
T apply(T arg);
}
// Generic singleton factory pattern
private static UnaryFunction<Object> IDENTITY_FUNCTION = new UnaryFunction<Object>() {
public Object apply(Object arg) { return arg; }
};
// IDENTITY_FUNCTION is stateless and its type parameter is
// unbounded so it's safe to share one instance across all types.
@SuppressWarnings("unchecked")
public static <T> UnaryFunction<T> identityFunction() {
return (UnaryFunction<T>) IDENTITY_FUNCTION;
}
는 이미
"Why is it safe to suppress this unchecked warning?" 읽고 답변이되지 않은 경고 질문을 설명하지만 신원 기능이 보인다 정체성과는 아무 상관이 없을 때 "정체성 기능"의 개념 나를 완전히 불행 둡니다.
블로흐는 내가 그것이 무엇인지 알고 있다고 가정하지만, 그것을 구현하기 위해 사용하는 구현에서, 그것은 신원 또는 신원과는 아무런 관련이 없습니다.
나는 위키 피 디아에서 이것을 확인했다 : Identity Function @ wikipedia 그러나 그것의 순수한 이론적 인 설명은 나에게 정체성과 관련이 있는지에 관해서는 아무것도 말해주지 않는다.
저는 Google에서 검색했고, 사람들은 약간의 의미를 가진 신원 기능으로 .equals()
및 .hashCode()
메소드를 참조하지만 입력 매개 변수를 그대로 반환하는 Bloch의 메소드와 완전히 다릅니다. 그게 정체성과 관련이 있니?
다른 사람들은 데이터베이스 기능에 대해 신원 기능으로 말하면서 각 호출마다 새로운 ID를 부여했는데, 이는 더 의미가 있지만 분명히 범위가 제한적입니다.
f(x) = x
위키 피 디아가 말한 바입니다. 제 질문은 '무엇'이 아니며, '왜 그렇게 부름 받았습니까?' – Adam
@ Adam 해당 함수에 전달 된 입력이 반환하는 출력과 동일하기 때문에. – Eran