public class pencil<T> {
private T []a;
public pencil(T[] a) {
this.a=(T[]) a;
}
public void pencil1() {
for (int i = 0;i<a.length;i++) {
if (a[i]== "pen") {
System.out.println("pen");
}
}
}
public class objQueue<T> {
private T[] queue;
private int frontIndex;
private int backIndex;
@SuppressWarnings("unchecked")
public objQueue() {
T[] Queue1=(T[]) new Object[10];
queue=Queue1;
frontIndex=-1;
backIndex=-1;
}
public void enqueue(T newEntry) {
if (isFull()) {
System.out.println("Queue is full");
}
else {
if (frontIndex== -1) {
frontIndex=0;
}
backIndex =(backIndex+1)% queue.length;
queue[backIndex]= newEntry;
}
}
public class main {
static objQueue<Object> queue=new objQueue<Object> ;
static pencil pen=new pencil(queue); //it gives error that The constructor pencil(objQueue<Object>) is undefined
public static void main(String[] args) {
queue.enqueue("pen")
pen.pencil1();
}
эта часть выдает ошибку static Pen Pen = New Pen (очередь); // выдает ошибку, что конструктор Pencil (objQueue) не определен Как можно написать очередь, например, статическое перо карандаша = новый карандаш (очередь), не выдавая ошибок или идеи для правильного написания кода?
У вас есть конструктор без аргументов и конструктор, который принимает массив. Почему вы ожидаете, что он знает, что делать, когда вы передаете единственный объект objQueue?
Этот код подозрительный. Некоторые из этих операторов определенно не будут компилироваться из-за синтаксической ошибки. Также никогда не бывает хорошей идеей не следовать устоявшимся соглашениям об именах.




Вы запутались, потому что используете одно и то же имя queue для экземпляра и его свойства.
Единственный конструктор, который существует для pencil, имеет T[] в качестве параметра, который вы бы использовали следующим образом.
static objQueue<Object> queue = new objQueue<Object> ;
// You'll need to have a getter added for queue
static pencil pen=new pencil(queue.getQueue()); // or queue.queue
Кстати, вы также сделали бы свой код более встроенным в стандарты, если бы начали использовать camelcase для имен своих классов objQueue -> ObjQueue и pencil -> Pencil.
Этот вопрос действительно был бы лучше с хорошим форматированием