Additional Methods From Specific Classes That Implement Interface
Jan 8, 2014
I am writing a game in Java for Android (although my question isn't Android or Game Dev specific).
I have a SceneManager class and a Scene interface and then various other classes that implement the Scene interface (Code at the end of this post).
Basically, in my MainGame class (which also implements the Scene Interface for Touch Event capturing purposes) I hold the bulk of my game code. Methods in this class are then called from my Level classes. (most of these are needed in all levels so it makes sense to hold them here and call them from the levels to eliminate unnecessary code duplication)
So, I have Level1, Level2......... Level20 classes which all implement Scene.
Now, the problem comes because in only 2 of my Levels something can happen (that can't in the other 18) and I need to run a response method in these 2 levels (the method isn't exactly the same, the response to this event happening is different for both levels).
To run common methods from my classes, I use my Scene Manager like this:
SceneManager.getInstance().getCurrentScene().updateLogic();
SceneManager.getInstance().getCurrentScene().render();
(The above is from my gameloop) - So it will run the updateLogic(); and render(); methods from whichever is the current scene (Level).
Scene is changed like so:
SceneManager.getInstance().setCurrentScene(LevelX);
This works great as all Level's have an updateLogic(); and render(); method.
So from my mainGame class, I am doing something like : (pseudo code)
public void checkIfSomethingHappened(){
if (something happens){
if (currentLevel==5){
Level5.response();}
[Code]....
The above would be called from my 2 level classes. So something like:
MainGame.checkIfSomethingHappened(); //Called in addition to the normal methods that make up that level
I don't really want to have this (second) 'if' statement here in the middle of my performance critical game loop.
What I'm after is something like this:
if (something happens){
SceneManager.getInstance().getCurrentScene().response();
}
However, this would require me to put stubs in the other 18 classes.
I'm thinking there must be a way to do this as the SceneManager already knows the current scene so it seems a waste checking it again via an if (or switch) statement. What is the best way to do this without having to put stubs into classes that don't require this method?
View Replies
ADVERTISEMENT
Nov 16, 2014
I need to implement the attached interface ("Locality"). In the attached UML diagram it has a 1 on 1 relationship with the class "Team". I don't know if this can be somehow implemented in Java. Can I create the attribute "team" in the Locality interface and let it be used by the "Town" and "City" classes? Could it be better to implement it as an abstract class instead?
View Replies
View Related
Apr 12, 2014
how to 'implement' an interface and 'extend' a class. Now I want to try and recall the information by memory without using any reference material.
Implementing an interface...
Java Code: //This interface will hold information for cell phones//Like saying... you can't BE a cell phone unless you have this information, at the very least
public interface CellInfo {
public void model();
public void make();
public void androidVer();
}
//Now I implement the interface for a class called Galaxy, which is a class about a specific phone
public class Galaxy implements CellInfo
public void model() {
System.out.println("I'm a Galaxy S5.");
}
public void make() {
System.out.println("I'm made by Samsung.");
[code]....
View Replies
View Related
Sep 3, 2014
if i call a class that implements an interface the method inside the interface will be triggered automatically by the compiler or happens only in the observer pattern? i keep simple to be surr the message came across, a typical example would be a listener on a button, or a collection that calls comparator)
View Replies
View Related
Apr 15, 2015
if some of you worked with Unity Game engine (C#) the idea is that game has main loop and once per cycle it call for example Update() method in all objects which implement certain interface.
I would like to repeat such pattern in Java for another another program, not even game related, but I would still need a main loop and event driven behaviour with async call backsSo question is how to implement the fallowing scenario:
Imagine i have interface which implement some methods and one of them is Execute()
I have the main controller class which implement main loop, also multiple other classes which implement the same interface with method Execute(). How can i call this Execute() method on all objects which implement that interface each loop cycle?
Should i keep and track reference of each object which was implemented with this interface and go through inner "for" loop trough each reference and call manually Execute() method in each of them?what if each object implementing interface have to run Execute() method simultaneously? in parallel independent from each other?
Referring back to Unity engine and their Update() method - there is exactly the same situation:you can have multiple objects with script attached, thats script implement interface which has multiple methods and one of them is Update() and once per cycle all objects with that Update() method will be executed in parallel independently
View Replies
View Related
Sep 17, 2014
So I created an interface which has the method
int getCalls();
I am trying to implement this method in another class but I'm not sure how to do so. My attempt is:
public getCalls(){ return getCalls(); }
When I run the program it sends the following exception:
Exception in thread "main" java.lang.StackOverflowError
at FibonacciForget.getCalls(FibonacciForget.java:14)
and it highlights the [return getCalls();] part.
What is the correct way to implement the getCalls() method?
View Replies
View Related
Mar 15, 2014
Below is the requirements and code. I am getting the error CODELAB ANALYSIS: LOGICAL ERROR(S)We think you might want to consider using: >
Hints:
-Correct solutions that use equals almost certainly also uses high
-Correct solutions that use equals almost certainly also uses low
Assume the existence of a Widget class that implements the Comparable interface and thus has a compareTo method that accepts an Object parameter and returns an int . Write an efficient static method , getWidgetMatch, that has two parameters . The first parameter is a reference to a Widget object . The second parameter is a potentially very large array of Widget objects that has been sorted in ascending order based on the Widget compareTo method . The getWidgetMatch searches for an element in the array that matches the first parameter on the basis of the equals method and returns true if found and false otherwise.
public static boolean getWidgetMatch(Widget a, Widget[] b){
int bot=0;
int top=b.length-1;
int x = 0;
int y=0;
while (bot >= top)
[code]....
View Replies
View Related
Jan 23, 2015
how it is decided which class will implement a session listener interface? Which class will implement HttpSessionListener? Which one will implement HttpSessionActivationListener, HttpSessionBindingListener or HttpSessionAttributeListener?
View Replies
View Related
Dec 15, 2014
How do you enforce any class which implements an interface should also implement comparable too? Say for instance you may have an interface
public interface Task
{ ... }
public class DoThis implements Task { ... }
public class DoThis1 implements Task { ... }
I want all of the classes which implements the interface Task to implement comparable too. Of course I can just say implements Task, Comparable. But is there something which we could do from interface level, i mean interface Task level?
View Replies
View Related
Dec 2, 2014
Let's say we have situation like this:
abstract class A
class B extends A
class C extends B
class D extends C implements SomeInterface
I'm trying to implement a method "doSomething" declared in SomeInterface in class D. While trying to call doSomething in main I get the error message ”The method doSomething is undefined for the type B”
This is my code i main:
B container = new D("1,2,3,4,5,6,7,8");
System.out.println(container.doSomething());
I need container to be an object of type B, because it goes later into a list of type B. According to what I've been told, the only file I need to edit to make this work is class D.
View Replies
View Related
May 8, 2014
I have three classes of object, most of which must implement two out of three interfaces. The interfaces look like this:
public interface Source {
public void startSending();
} public interface Sender {
public void setReceiver();
[Code] .....
That works fine, but I am wondering if pairing the interfaces into subinterfaces is a defensible methodology. For example, all classes that act like Producer must implement both the Source and Sender interfaces. And all classes that act like Relayer must implement the Sender and BlackHole interfaces. I could define two subinterfaces like this:
public interface Factory extends Source, Sender {
}
public interface Modifier extends BlackHole, Sender {
}
I could then define my classes like this:
public class Producer implements Factory {
}
public class Relayer implements Modifier {
}
public class Consumer implements BlackHole {
}
Within the class definitions, it makes no difference, as I will have to implement the same methods either way. But it seems more self-documentary to create the subinterfaces from their parent interfaces and name them in ways that reflect what the classes that implement them must actually do.
View Replies
View Related
Apr 14, 2015
I have been researching the Iterator and making a class implement iterable. I have seen this example shown below and was wondering how I could change this so that iterable() is not called upon in the main. I would like to be able to make a method that returns an instance of a class that implements the Iterator interface hopefully an inner class. This is because my program will not have a main and will be supplied with a main that includes a new Object with will use the iterator method.
import java.util.*;
public class IteratorDemo {
public static void main(String args[]) {
// Create an array list
ArrayList al = new ArrayList();
// add elements to the array list
al.add("C");
[Code] ....
This is all I have been able to understand from what I want to do. This does not work and this is what I am trying to achieve
public class MyArrayList implements Iterable {
public static final int DEFAULT_SIZE = 5;
public static final int EXPANSION = 5;
private int capacity;
private int size;
private Object[] items;
[Code] ...
View Replies
View Related
Feb 13, 2014
I have the following code that will make linked list and order its elements using self referential objects. but i have the following error:
incompatible types
required: ListNode<T#2>
found: ListNode<T#1>
where T#1,T#2 are type-variables:
T#1 extends Comparable declared in method <T#1>insertInOrder(T#1)
T#2 extends Comparable declared in class OrderedList
import java.util.*;
public class ListNode<T> {
ListNode<T> nextNode;
T data;
public ListNode(T item)
{
this(item, null);
[code]...
View Replies
View Related
Jun 4, 2014
why don't I define my methods in a class, rather than going a level up and declaring it first in an abstract class/interface? If the point is to have different implementations for different needs, then we have the option to override the methods.
View Replies
View Related
Oct 20, 2014
I am new to Java, and last week had an assignment to create a shopping list. I made it so that I have one class use a ProductData class to load an array of objects (description, price, priority). This week I need to take that program and change it so that it includes an Interface and Abstract Class. I need to also split one class up into at least 2 others.
I am having trouble getting my thoughts together and figuring out what to put in the interface and what to put in the abstract class. I'm thinking that it might be best to split up the ProductData class up into 3 different classes: description, price, and priority. Then have an interface with a print method. Each of those 3 classes will implement the interface.
As for the abstract class, have the price and priority extend the abstract class. The abstract class will be at the same level as the interface and contain the set and get methods. Right now they are of 2 different data types: int, double. Should I make both of them Double, and then use a method to change the priority to an int?
Should price and priority inherit from description, or should they all be at the same level? I am thinking that they should be at the same level because they all describe the item in the array.
My most confusing part is that I have no clue at all on how I can load that array when each object is split up in a different class. My professor went over ArayLists last week, and we can now use them if we want, but the assignment doesn't explicitly say that we should change it to an Array List. Where does the constructor for the ProductData() go? Do I split it up into 3 different constructors?
View Replies
View Related
Nov 29, 2014
If I lets say have an interface Animal, and I create a lot of classes with a different animal name that implement the interface Animal. Then I create an ArrayList of Animal. Then I would put in lets say Dog class into the ArrayList, which has custom methods and data that the Animal Interface doesn't have, is this data ripped away except for the methods that are put in the Animal interface? So if I would cast the Animal back to Dog, would it retain all the data that existed before it was placed in the ArrayList?
View Replies
View Related
Feb 5, 2014
I have following code. In this code CSClient is an interface. All methods of CSClient are implementaed in CSClientImpl class. Do I not need CS Client Impl imported in this code ?
How can I call getBranch() of CSClient, which is not implemented in CSClient as " this. getCsClient(). get Branch (new CSVPath(vpath), true);" ? This code works fine without any error in eclipse.
How can a method getBranch(), which is implemented in CSClientImpl class be used in this code without importing CSClientImpl ?
package com.rbc.teamsite.client;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
[code]....
View Replies
View Related
Jul 26, 2014
I'm working with Libgdx but I have a basic java question. I'm trying to access the overridden methods from and interface in another class via a call but I'm not sure how. This is what I've got so far :
Java Code:
public interface Controller {
public void show ();
}
public class MainActivity extends AndroidApplication implements Controller {
@Override
public void showAd(boolean show) {
System.out.println("TEST");
[Code] ....
Right now this code returns a null pointer at the call.
View Replies
View Related
Apr 14, 2014
I am new a creating GUIs and am not quite sure how to correctly make one. I have done the inheritance parts, and created two extra appliances: a washer and dryer. Now Creating the GUI ....
Here are the instructions to my project.
Introduction to GUIs (+ some inheritance)
For this assignment, you are going to create a user interface that interacts with the setters and getters of some classes that you will create.
First, create an abstract class called Appliance. This abstract class should have two attributes (dealing with household appliances) and two abstract methods called turnOn() and turnOff(). These methods should return void.
Then, create two subclasses of Appliance that represent household appliances (like a Refrigerator or Stove ((don't use those!))). These subclasses should have two attributes that are specific to the various appliance. Each subclass should implement the turnOn() and turnOff() methods. These methods should print to the command line some information about the appliance as it turns on and off.
Now, the fun part! Create a GUI interface!
Your window should have two panels: one for each appliance subclass. Each panel should have 4 textboxes (with appropriate labels) to receive/display information that correspond to the 4 attributes (2 from Appliance and 2 from the subclass) for each subclass.You also need 2 buttons on each panel: A Get button and a Set button.
When the Get button is pressed, the text boxes should be filled with the information from the instantiated object of the appropriate subclass. When the Set button is pressed, the object should then contain the information contained that the user has altered.
In your main method, you should create an object of each subclass, and prefill it with information (either using the constructor or the setters), then display your GUI. You should now be able to get and set the information for your objects from the GUI.
At least one of your attributes for each subclass should be numeric
Note that you will need to handle incorrectly formatted input (You can use exception handling to do this if you want to. Wrapper classes also will work)
If there is text in the boxes when the "Get" button is pressed, it should be overwritten by what is in the object. Remember that these two panels should both be on screen at the same time.
You don't need 2 different windows, one window: 2 panels.
View Replies
View Related
Oct 5, 2014
What approach Collections.reverse() uses to reverse list? My task is to implement and compare reverse methods from list and i already did reveres with Recursion, Swap, Reading backward with creating reversed copy.
Does Collections.reverse() use different approach from those i already did?
View Replies
View Related
Apr 24, 2014
I'm wondering about the use of exceptions to handle errors that might occur during file I/O when the I/O is done by a method implementing an interface's method. The idea is for the interface to provide a uniform way for application code to read (and write, though I'm not addressing that in this post) a document from a file, given a File object that specifies the on-disk location of the document. The "document" can be an instance of any class the application programmer wants it to be, provided that it can be created from a file stored on disk. Here's the interface definition:
public interface DocumentRamrod<T>
{
public T openDocumentFile(File file) throws FileNotFoundException;
}
A simple implementation, when T is a class that just holds a String, might look like this (Please overlook the fact that there is no call to the BufferedReader's close method, as it's not needed for this example.):
public class MyRamrod implements DocumentRamrod<OneLineOfText>
{
public OneLineOfText openDocumentFile(File file) throws FileNotFoundException
{
return new OneLineOfText(new BufferedReader(new FileReader(file)).readLine());
}
}
But, that one line where the file is read (Line 5) might generate an IOException.To cope with it, I could add a try-catch to the implementation like this:
public class MyRamrod implements DocumentRamrod<OneLineOfText>
{
public OneLineOfText openDocumentFile(File file) throws FileNotFoundException
{
try
{
return new OneLineOfText(new BufferedReader(new FileReader(file)).readLine());
} catch (IOException ex)
{
Logger.getLogger(MyRamrod.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Or, I could add that to the list of exceptions defined for the method in the interface, like this:
public interface DocumentRamrod<T>
{
public T openDocumentFile(File file) throws FileNotFoundException, IOException
}
But that's where I'm getting nervous, as it makes me realize that, with an infinite number of possible implementations of openDocumentFile, I can't predict what all the exceptions thrown might be.should I have openDocumentFile simply throw Exception, and let the application programmer sort out which one(s) might actually be thrown, should I keep listing them as it become clear which ones are likely to be thrown, or should I not have openDocumentFile throw any exceptions and let the application programmer deal with it in the implementation of openDocumentFile (with try-catch blocks, etc.)? In Good Old C, I'd have passed back a null to indicate some general failure, with the various callers up the call-stack having to either deal with it or pass that back themselves (until some routine up the stack finally did deal with it), but that seems like an approach the whole exception mechanism was designed to avoid.
I'm thinking the right choice is to have openDocumentFile throw Exception, and let the application programmers decide which subclasses of Exception they really want to deal with. But I have learned to be humble about the things I think, where Java is concerned,
View Replies
View Related
Feb 11, 2014
How to implement HashMap put and get methods without using Java Collection framework?
View Replies
View Related
Jan 8, 2014
why interfaces inherit prototype of all the non final methods of the object class in itself? Object class is parent class of all the class and Interface is not the class.
View Replies
View Related
Apr 14, 2014
I need to create a Dog class that represents a dog. Then, there are 2 different methods that in the end will each represent one dog each. Each printout will show the Name, Breed, Age, and Age in Human Years. Right now I'm having trouble trying to move methods in between each class. Here's the first class.
import java.util.Scanner;
public class Dog { //no main method
static Scanner input = new Scanner(System.in);
//writeObject method
public static void writeObject(String name, String breed, int age) {
System.out.println("Enter the dog's name, breed, and age: ");
[Code] ....
View Replies
View Related
Apr 16, 2015
how come you can call non static methods from other classes(objects when they are created from main) but not static methods in the same class as the main method??
example I cannot call the method maximum from the main method aslong as its not static BUT i can call other objects non static methods from main??
class test{
public static void main(String [] args){
Scanner input = new Scanner(System.in); //create new Scanner object
//for input
int number1;
int number2;
[Code]...
View Replies
View Related
Feb 4, 2015
I have a very standard Lab assignment. It's probably been seen a lot. I wrote the first part not realizing I had to write a second class to do use the methods. I'm not sure how to change my program to call methods from my second class instead of doing all my calculations with user input in my first class.
Here's the first class' code:
package tickets;
//Imports classes used for "Ticket" application.
import java.util.*;
import java.text.DecimalFormat;
public class Tickets {
[Code] ......
The code is obviously incomplete. I have not tried to compile, nor would I expect it to compile right. I'm not sure how to move my calculations from the first class shown above into my second class and use them as methods.
View Replies
View Related