Java POJO의 필드, 변수, 속성 및 속성은 어떤 차이가 있습니까?
getter/setters가 있는 Java POJO의 내부 프라이빗 변수를 언급할 때 다음과 같은 용어를 사용했습니다.
- 들판
- 변수
- 기여하다
- 소유물
위의 내용과 차이가 있습니까?그렇다면 어떤 용어를 사용해야 할까요?이 엔티티가 지속될 때 사용할 다른 용어가 있습니까?
연락처 : http://docs.oracle.com/javase/tutorial/information/glossary.html
들판
- 클래스의 데이터 멤버입니다.특별히 지정하지 않는 한 필드는 스태틱하지 않습니다.
소유물
- 사용자가 설정할 수 있는 개체의 특성(예: 창 색상).
기여하다
- 상기 용어집에는 기재되어 있지 않습니다.
변수
- 식별자에 의해 명명된 데이터 항목입니다.각 변수에는 int 또는 Object 등의 유형과 범위가 있습니다.클래스 변수, 인스턴스 변수, 로컬 변수를 참조하십시오.
네, 있어요.
변수는 로컬, 필드 또는 상수일 수 있습니다(단, 이는 기술적으로 잘못된 것입니다).아트리뷰트처럼 애매해요.또한 일부 사용자는 최종 비정적(로컬 또는 인스턴스) 변수를 호출하는 것을 좋아합니다.
"값"이는 Scala와 같은 새로운 JVM FP 언어에서 비롯될 수 있습니다.
필드는 일반적으로 인스턴스 클래스의 개인 변수입니다.그것은 getter와 setter가 있다는 것을 의미하지 않는다.
속성은 애매한 용어입니다.XML 또는 Java Naming API와 혼동하기 쉽습니다.그 용어 사용을 피하도록 하세요.
속성은 getter와 setter의 조합입니다.
다음 예시는 다음과 같습니다.
public class Variables {
//Constant
public final static String MY_VARIABLE = "that was a lot for a constant";
//Value
final String dontChangeMeBro = "my god that is still long for a val";
//Field
protected String flipMe = "wee!!!";
//Property
private String ifYouThoughtTheConstantWasVerboseHaHa;
//Still the property
public String getIfYouThoughtTheConstantWasVerboseHaHa() {
return ifYouThoughtTheConstantWasVerboseHaHa;
}
//And now the setter
public void setIfYouThoughtTheConstantWasVerboseHaHa(String ifYouThoughtTheConstantWasVerboseHaHa) {
this.ifYouThoughtTheConstantWasVerboseHaHa = ifYouThoughtTheConstantWasVerboseHaHa;
}
}
조합이 더 많은데 손가락이 피곤해요:)
JAXB를 하고 XMLAccessType
저도 같은 질문이 있었어요.JAXB Javadoc에서는 "필드"는 비정적, 비과도적 인스턴스 변수라고 합니다."property"에는 getter/setter 쌍이 있습니다(따라서 개인 변수여야 합니다).'공적인 멤버'는 공개되어 있기 때문에 아마도 상수가 될 것입니다.또한 JAXB에서 "속성"은 XML 요소의 일부를 참조합니다.<myElement myAttribute="first">hello world</myElement>
.
일반적으로 Java "property"는 적어도 getter 또는 값을 얻을 수 있는 다른 공개 메서드를 가진 필드로 정의할 수 있습니다.어떤 사람들은 또한 부동산에 세터가 있어야 한다고 말한다.이와 같은 정의에서는 컨텍스트가 전부입니다.
Dietel과 Dietel은 필드 대 변수를 설명하는 좋은 방법을 가지고 있습니다.
"클래스의 정적 변수와 인스턴스 변수를 함께 필드라고 합니다." (섹션 6.3)
변수는 클래스의 여러 메서드에서 사용하기 위해 필요한 경우 또는 프로그램에서 클래스의 메서드에 대한 호출 사이에 값을 저장해야 하는 경우에만 필드로 선언해야 합니다.(섹션 6.4)
따라서 클래스의 필드는 클래스 범위로 선언된 정적 변수 또는 인스턴스 변수입니다.
참고 자료 - Dietel P., Dietel, H. - Java™ How To Program (얼리 오브젝트), 제10판(2014년)
휴지 상태에서 힌트를 얻는 경우:
휴지 상태 필드와 함께 개체의 상태를 읽거나 씁니다.또한 휴지 상태는 Java Bean 스타일 속성을 DB Schema에 매핑합니다.휴지 상태 개체를 로드/저장하기 위한 필드에 액세스합니다.매핑이 속성별로 이루어지면 휴지 상태에서는 getter와 setter가 사용됩니다.
필드의 getter/setter가 있는 곳을 구별하는 캡슐화(Encapsulation)는 속성이라고 하며, 이를 통해 setMethod 내에서 해당 속성의 기본 데이터 구조를 숨깁니다.따라서 setters 내부의 불필요한 변경을 방지할 수 있습니다.캡슐화는 모두...
필드를 사용하기 전에 선언하고 초기화해야 합니다.대부분 수업용 내부용입니다.
속성은 세터에 의해 변경될 수 있으며 게터에 의해 노출됩니다.여기 필드 가격은 getter/setters가 있기 때문에 재산입니다.
class Car{
private double price;
public double getPrice() {…};
private void setPrice(double newPrice) {…};
}
<class name="Car" …>
<property name="price" column="PRICE"/>
</class>
마찬가지로 필드를 사용합니다.[하이버네이션 시 private int id; @Id에 주석을 달지만 Property를 사용하면 더 많은 제어가 가능합니다]
class Car{
private double price;
}
<class name="Car">
<property name=" price" column="PRICE" access="field"/>
</class>
Java 문서 설명:필드는 클래스의 데이터 멤버입니다.필드는 비정적, 비과도적 인스턴스 변수입니다.필드는 일반적으로 인스턴스 클래스의 개인 변수입니다.
Java에서 변수, 필드, 속성 및 속성 간의 차이:
변수는 메모리 위치에 지정된 이름입니다.프로그램의 기본 스토리지 단위입니다.
필드는 클래스의 데이터 멤버입니다.특별히 지정하지 않는 한 필드는 public, static, final이 아닌 public, static, final로 할 수 있습니다.
속성은 필드의 다른 용어입니다.일반적으로 직접 접근할 수 있는 공공장소입니다.
- NetBeans 또는 Eclipse에서는 클래스의 object를 입력하면 점(.) 뒤에 Attribute라고 불리는 몇 가지 제안을 합니다.
속성은 필드에 사용되는 용어이지만 일반적으로 getter와 setter의 조합이 있습니다.
변수는 필드와 비필드로 구성됩니다.
필드는 다음 중 하나입니다.
- 정적 필드 또는
- 인스턴스화라고도 불리는 비정적 필드(예: x = F())
비필드는 다음 중 하나입니다.
- 로컬 변수, 필드의 유사성이지만 모든 필드의 외부가 아닌 메서드 내부 또는
- 매개변수(예: x = f(y)의 y
결론적으로 변수 간의 주요 구분은 필드가 필드인지 비필드인지에 있습니다.즉, 변수가 메서드 내에 있는지 모든 메서드에 있는지 여부를 의미합니다.
기본적인 예(구문에 대해서는 실례지만, 저는 초보입니다)
Class {
//fields
method1 {
//non-fields
}
}
Java 변수, 필드, 속성
variable
- 이름 있는 스토리지 주소.모든 변수에는 메모리 크기, 속성 및 동작을 정의하는 유형이 있습니다.Java 변수 유형에는 다음과 같은 것이 있습니다.class variable
,instance variable
,local variable
,method parameter
//pattern
<Java_type> <name> ;
//for example
int myInt;
String myString;
CustomClass myCustomClass;
field
- 멤버 변수 또는 데이터 멤버.그것은 이다.variable
내부class
(class variable
또는instance variable
)attribute
- 일부 기사에서 볼 수 있습니다.attribute
그것은 이다.object
의 표현class variable
.Object
에 의해 동작하다attributes
일련의 특성을 정의합니다.
CustomClass myCustomClass = new CustomClass();
myCustomClass.myAttribute = "poor fantasy"; //`myAttribute` is an attribute of `myCustomClass` object with a "poor fantasy" value
property
-field
+ 경계getter/setter
필드 구문을 사용하지만 후드 아래에 있는 메서드를 사용합니다.Java
순수한 형태로 지원하지 않습니다.을 보다.Objective-C
,Swift
,Kotlin
예를들면Kotlin
샘플:
//field - Backing Field
class Person {
var name: String = "default name"
get() = field
set(value) { field = value }
}
//using
val person = Person()
person.name = "Alex" // setter is used
println(person.name) // getter is used
사실 이 두 용어는 같은 것을 나타낼 때 종종 사용되지만, 몇 가지 예외적인 상황이 있습니다.필드는 객체의 상태를 저장할 수 있습니다.또한 모든 필드는 변수입니다.따라서 필드가 아닌 변수가 있을 수 있습니다.따라서 4가지 유형의 변수(클래스 변수, 인스턴스 변수, 로컬 변수 및 파라미터 변수)를 살펴보면 클래스 변수와 인스턴스 변수가 객체의 상태에 영향을 줄 수 있음을 알 수 있습니다.즉, 클래스 또는 인스턴스 변수가 변경되면 객체의 상태가 변경됩니다.따라서 클래스 변수와 인스턴스 변수는 필드이지만 로컬 변수와 파라미터 변수는 필드라고 할 수 있습니다.
상세한 것에 대하여는, 다음의 소스에 액세스 해 주세요.
http://sajupauledayan.com/java/fields-vs-variables-in-java
문제는 오래되었지만 변수와 필드의 또 다른 중요한 차이점은 필드가 선언될 때 기본값을 얻는다는 것입니다.반면 변수는 초기화해야 합니다.
제 이해는 아래와 같습니다만, 100% 맞다고 하는 것은 아닙니다만, 잘못 알고 있는 것일지도 모릅니다.
변수는 사용자가 선언하는 것으로, 기본적으로는 변경되거나 값이 다를 수 있지만, 명시적으로 최종이라고 할 수도 있습니다.자바에서는 다음과 같습니다.
public class Variables {
List<Object> listVariable; // declared but not assigned
final int aFinalVariableExample = 5; // declared, assigned and said to be final!
Integer foo(List<Object> someOtherObjectListVariable) {
// declare..
Object iAmAlsoAVariable;
// assign a value..
iAmAlsoAVariable = 5;
// change its value..
iAmAlsoAVariable = 8;
someOtherObjectListVariable.add(iAmAlsoAVariable);
return new Integer();
}
}
기본적으로 변수는 선언되어 값을 유지할 수 있는 모든 것입니다.위의 메서드 foo는 예를 들어 변수를 반환합니다.새로운 Integer()의 메모리주소를 보관 유지하는 Integer 타입의 변수를 반환합니다.상기에 표시되는 다른 모든 것도 변수 listVariable, aFinalVariableExample입니다.다음은 예를 제시하겠습니다.
필드는 범위가 더 명확하거나 구체적인 변수입니다.위의 예에서는 메서드 foo 범위에서 반환되는 변수가 명확하지 않으므로 필드라고 부르지 않습니다.한편 iAmAlsoVariable은 메서드 foo의 범위에 따라 제한된 로컬 필드이며 listVariable은 필드(변수)의 범위가 오브젝트 범위에 따라 제한된 인스턴스 필드입니다.
속성은 액세스/변환할 수 있는 필드입니다.getter/setter를 표시하는 필드는 모두 속성입니다.
속성에 대해서는 잘 모르며, 변수, 필드, 속성에 대해서도 이해하고 있음을 다시 한 번 말씀드립니다.
언급URL : https://stackoverflow.com/questions/10115588/what-is-the-difference-between-field-variable-attribute-and-property-in-java
'programing' 카테고리의 다른 글
시리얼라이제이션이란? (0) | 2022.08.27 |
---|---|
Java Servlet이란? (0) | 2022.08.27 |
Python 프로그램을 C/C++ 코드로 변환하시겠습니까? (0) | 2022.08.27 |
정적 링크와 동적 링크 (0) | 2022.08.27 |
vue에서 getters로 파라미터를 송신하는 방법 (0) | 2022.08.27 |