가능한 한 간단하고 체계적으로 코딩하려고 노력하는 데 문제가 있습니다. 기본적으로 여러 값을 보유하는 유사한 객체 배열이 있습니다. 그 개별적인 가치에 접근하고 의지대로 수정할 수는 있지만 접근 할 수없는 것처럼 보입니다. 이것은 많은 변수와 이것 저것이 있습니다Java에서 유사한 객체 배열에 저장된 객체의 개별 값에 액세스하는 방법
//In file Champion.java
package Champions;
public interface Champion{}
//In another file ChoGath.java
package Champions;
public class ChoGath implements Champion{
public static double health = 440.0;
}
//Yet another file Ahri.java
package Champions;
public class Ahri implements Champion{
public static double health = 380.0;
}
//In the main build file LOLChampBuilder.java
package LOLChampBuilder;
import Champions.*;
public class LOLChampBuilder{
public static Champion[] listOfChampions = {new ChoGath(), new Ahri()};
public static void main(String args[]){
//This next line works
System.out.println(new ChoGath().health);
//This next line does not work
System.out.println(listOfChampions[0].health);
}
}
... 코드가 기본적으로 같은 모습입니다 그러나 이것은 기본적인 문제입니다.
ChoGath와 Ahri는 챔피언 그룹의 일원이며 각각 건강을위한 고유 한 가치가 있습니다. ChoGath (예를 들어)가 배열에있는 곳을 알고 있기 때문에 배열을 조합하여 값을 쉽게 얻을 수 있기를 원합니다.
나는 Cannot find symbol 'health' in Champions.Champion
오류가 발생합니다. 나가서 챔피언에 값을 만들었습니다. 그리고 그것을 고친다. (또한 그것을 클래스로 변경하고 구현 대신에 확장한다.) 그런 다음 프린트 할 때 값이 건강에 가장 최근에 편집되었으므로 값은 항상 380.0이다. 챔피언.
하나의 배열로 모든 "챔피언"을 그룹화 할 수 있기를 바래요. (즉, 챔피언 이 틀리다면과 같은 객체 유형이어야합니다.) 값. 나는 ArrayList (내가 사용한 적이없는) 또는 완전히 다른 것을 사용할 필요가 있는지 모르겠다. 이제이 문제를 해결하고 방대한 파일에 모두 넣을 수 있지만 정리 목적과 청결을 위해 여러 파일을 사용하려고합니다. 할 일에 대한 생각? 당신은 인터페이스에서 getter와 setter를 사용할 필요가
모두 감사 의견에 대한 ChoGath 및 Ahri 클래스에서이 메소드를 구현합니다. 문제는 빠르고 간단하게 해결되었습니다. 사람들이주는 건설적인 피드백에 깊은 인상을받으며이 사이트에 기여하고 더 많은 것을 배우기를 바랍니다. – ShadowOfCaboose