Member 11735960 Ответов: 2

Как получить доступ к статической переменной из другого пакета?


package com.gbr;

public class Hai {
public static int A=88;
}


package com.gbr;

public class Hello {
public static int A=99;
}


package org.sd;

import static com.gbr.Hello.*;
import static com.gbr.Hai.*;

class Test13 {
public static void main(String args[]){
	System.out.println(Hello.A);
        System.out.println(Hai.A);
}
}


Вывод: ссылка на A неоднозначна

Как получить доступ к статической переменной A обоих классов? Какие есть другие способы?

Что я уже пробовал:

Я выполнил вышеуказанные коды.

Richard MacCutchan

Я просто попробовал это сделать и не получил никаких ошибок, а окончательный код печатает правильное значение.

Member 11735960

Я прошу прощения. Я исправил код.

Richard MacCutchan

Теперь у вас есть другие имена пакетов, чем те, которые вы импортируете.

Richard MacCutchan

Ваша проблема действительно проистекает из того факта, что у вас есть два определения A Таким образом, если вы не используете полное имя, компилятор не может быть уверен, на какое из них вы ссылаетесь.

2 Ответов

Рейтинг:
18

Mohibur Rashid

Пожалуйста, прочтите это документ[^]


В этом разделе приведены различные примеры того, как вы можете объявить

Улучшение ответа Ричарда Маккатчана

package org.sd;

class Test13 {
public static void main(String args[]){
	System.out.println(com.gbr.Hello.A);
        System.out.println(com.gbr.Hai.A);
}
}

или
package org.sd;

import com.gbr.Hello;
import com.gbr.Hai;
class Test13 {
public static void main(String args[]){
	System.out.println(Hello.A);
        System.out.println(Hai.A);
}
}


или
package org.sd;

import static com.gbr.Hello.*;
import com.gbr.Hai;
class Test13 {
public static void main(String args[]){
	System.out.println(A);
        System.out.println(Hai.A);
}
}


или
package org.sd;

import static com.gbr.Hello.A;
import com.gbr.Hai;
class Test13 {
public static void main(String args[]){
	System.out.println(A);
        System.out.println(Hai.A);
}
}




Также прочтите это понять двусмысленность[^]


Member 11735960

Спасибо всем за ваши ответы. Они были полезны. Спасибо

Рейтинг:
0

Richard MacCutchan

Попробуй:

package org.sd;
 
import static com.gbr.Hello.*;
import static com.gbr.Hai.*;
 
class Test13 {
public static void main(String args[]){
	System.out.println(com.gbr.Hello.A);
        System.out.println(com.gbr.Hai.A);
}
}


Member 11735960

Спасибо. Эта работа. Разве это единственное решение?

Mohibur Rashid

Я бы не стал этого предлагать

Richard MacCutchan

Я тоже, но в наши дни люди, кажется, делают то, что хотят, а не то, что должны.