Hiding Unsafe Methods Through Polymorphism
Feb 17, 2015
Recently I have been thinking of using additional interfaces in one of my libraries to hide certain "unsafe" methods of my classes from the user. I would like to get the opinion of other, more advanced java programmers on this issue.
What I do is something like the following (heavily simplified):
public interface ReadOnly {
public int getValue();
}
public interface ReadWrite extends ReadOnly {
public void setValue(int value);
[Code] ....
The user would have access to the ExternalInterface. The ExternalInterface is controlling the values of the InternalComponent. The user can get the InternalComponent, but typecasted to a ReadOnly which does not expose the setters.
Now the thing is the user can still access the setValue method by typecasting the ReadOnly to an InternalComponent or to a ReadWrite, and that is not bad. If the user knows exactly what he/she is doing this will give him/her more flexibility and more power. But this way it *should* become obvious that this is not the intended use and perhaps the extra work of typecasting will discourage the user from doing this.
View Replies
ADVERTISEMENT
Aug 25, 2014
I have difficulty understanding the following behaviour.
class A {
public String string = "a";
public String toString() {
return string;
}
}
class B extends A {
[code]...
The output of the program is 'c'. This is expexted behaviour. But if class B is changed as follows,
class B extends A {
public String string = "b";
}
Now the program prints 'a' instead of 'c'. Why the statement: b.string = "c"; is not taken into account?
View Replies
View Related
Nov 5, 2014
I had learned that narrowing conversion are called unsafe but unable to know why.
View Replies
View Related
Jun 30, 2014
String filename="C:UsersRajashekarDesktopfwfwdSoftware Failures1_Test.txt";//Input Files
String data;
public ArrayList<String> value=new ArrayList<String>();
public void read() throws IOException{
File f = new File(filename);
[Code] ....
View Replies
View Related
Sep 26, 2014
I am thinking of creating a quiz application and facing one problem.
On first question I don`t have to show previous button and on last question I don`t have to show next button.And for in between question I have to show both the buttons.
.
How can I do that in a JSP page.
View Replies
View Related
Apr 15, 2014
I'm creating a game called Mouse Trap and I'm having an issue with a graphic drawn using AWT. Basically, when the mouse collides with the cheese, I want the cheese to disappear, or call (cheese[i].hide()). However, the cheese does not appear. hide() works for all other objects that inherit from PFigure, but the cheese will not. It's created a major issue in my game, and basically the only task left to accomplish.I believe my problem lies within Cheese.java, method draw(). For example, if I replace it with an example drawing, this problem goes away!:
public void draw() {
Graphics g = panel.getGraphics();
g.setColor(Color.blue);
g.drawOval(x + width / 4 , y + 1, width / 2, height / 2);
[Code] ....
I have three classes below that most likely involve the problem, feel free to ask if you need the others.PFigure.java (This class cannot be changed as a requirement to my project)
import java.awt.*;
public abstract class PFigure implements Comparable {
protected int x, y; // Current position of the figure
protected int width, height; // Drawn (displayed) this size
protected int priority; // Can use to determine "winner"
protected Panel panel; // Panel the figure lives on
[code]....
View Replies
View Related
Mar 21, 2015
I have my code in 3 different files using encapsulation (Data hiding) and i have 1 problem at the very end of my code in my if and else statement (very bottom) when trying to call the classes from the other 2 documents. I will put the code in 1st document to 3rd document.
// FIRST DOCUMENT
public class CollegeCourse { //class name
//variables
String deptName;
int courseNum;
int credits = 3;
double fee;
[Code] ....
UPDATE: error message is
UseCourse.java:24: error: cannot find symbol
LabCourse lc = new LabCourse(department, course, Credits);
^
symbol: variable department
location: class UseCourse
UseCourse.java:24: error: cannot find symbol
LabCourse lc = new LabCourse(department, course, Credits);
[Code] ....
4 errors
View Replies
View Related
Jan 23, 2014
I've a question regarding polymorphism.
Is polymorphism possible only when the superclass is abstract?
View Replies
View Related
Jan 29, 2015
While studying polymorphism , i have some doubts that i am unable to clarify ..... Here they are :
Suppose our inheritance ladder be :
C1 <- C2 <- C3 <-....... <- C100
where C1 is most general (superclass) and C100 is most specific class .
Now , if i write java code in my main() :
C21 Obj = new C100();
Obj.someMethod();
So, what will happen in scenarios as given below :
Scenario - 1) If someMethod() is only defined in C1 ? How will compiler search for this someMethod() ?Will it be executed ?
Scenario - 2) If that someMethod() is static and only defined in C1 , then how will it be searched and executed ?
Scenario - 3) If someMethod() is only present in C100 , then what will happen ?
View Replies
View Related
Sep 18, 2014
I have a program I want to make (text based, no gui). There is the main class, an Employee class (sort of a template), a CrewMember class, and a Manager class.
I'll put the code for each class an explain the problem I have.
package polymorphism;
import java.util.Random;
public class Start {
public static void main(String[] args) {
Random rand = new Random();
Employee staff[] = new Employee[5];
for(int i = 0; i < staff.length; i++){
[Code] ....
Some of the code is a bit incomplete simply because I ran into the problem. As you can see I made an array in the Start class and it holds objects of Employee type, but create a new instance of either a crew member or a manager, sets their wages, hours, and bonus if applicable. I know if I create an array of a certain type, I can't call upon the subclass' method (Manager in this case) because it has a new method that I added. What I'm trying to do is pretty much call upon the getSalary() method in the Manager class/object, but of course I can't. What way would i be able to do that? I tried looking for some answers. I read about making the superclass abstract and implementing it into the subclasses. Would that be an option?
View Replies
View Related
May 31, 2014
I would eliminate the ifs and elses using polymorphisms that solves this lot of ifs? How could I solve this?
View Replies
View Related
Apr 19, 2014
can we achieve runtime polymorphism by data members?
View Replies
View Related
Jan 9, 2014
Why is the equals-method in the super-class invoked? Shouldn't the equals-method in the sub-class be invoked(at least in the first if-statement since b2 is a B(i know B is also an A))?Is the equals-method overridden? Or does B have its own equals-method?
class SomeClass{
public static void main(String[] args) {
B b1 = new B(123,1);
B b2 = new B(123,2);
[code]...
View Replies
View Related
Apr 14, 2015
I have a quick polymorphism question. I have a parent class and a sub class that extends the parent class. I then declare an array of parent class but instantiate an index to the sub class using polymorphism. Do I have to have all the same methods in the child class that I do in the parent class? Here is an example of what I mean.
public class ParentClass
{
public ParentClass(....){ }
public String doSomething(){ }
}
public class ChildClass extends ParentClass
{
public ChildClass(....)
[Code] ....
Is polymorphism similar to interfaces where the child class needs all the same methods?
View Replies
View Related
Jan 10, 2014
I have written two methods called "contains" and "overlaps". The method "contains" is to detemine whether a point (x, y coordinate) is within the surface area of a square object. The location of the square objects is determined by the location of the upper left corner of the square.The method "overlaps" is to determine whether two square objects overlap each other.
I have written these as two separate methods. However I want to change the method "overlaps", so that it uses the method "contains" within it. I.e. using a method within a method. Thereby hopefully making the "overlaps" method a bit more clear and easy to read.
Java Code:
/** Returns true of the point with the coordinates x,y, are within the square. */
public boolean contains(int x, int y){
int sx = location.getX(); //"location" refers to a square object
int sy = location.getY(); // getX() and getY() are to find it's coordinates
// "side" is the side length of the square
if (x >= sx && x <= (sx + side) && y >= sy && y <= (sy + side)){
[code]....
View Replies
View Related
Jun 22, 2014
Below is the main class of a project ive been working on, the goal is to start a countdown specified by the user. When the countdown reaches zero the base drops in the song that is being played. (Its not done yet) The main problem that arises is the fact that my song plays, and AFTER that, the timer starts.
Output:
Please input countdown in HH:mm:ss format.
00:00:41
Start?
Yes
The name of of the song is: Skrillex & Damian "Jr Gong" Marley - "Make It Bun Dem"
The time of base drop is: 00:00:41 //Song starts here
//Song is done
//Then timer starts
00:00:41
00:00:40
00:00:39
[code].....
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
Oct 8, 2014
Write the header for a method named send that has one parameter of type String, and does not return a value.Write the header for a method named average that has two parameters, both of type int, and returns an int value.
View Replies
View Related
Dec 1, 2014
I have seen these two methods of using ItemListener. I am curios which is better and why. What are the differences?
ItemListener a;
Choice ce = new Choice();
ce.addItemListener(a);
[code]....
View Replies
View Related
Apr 14, 2015
I have had to create a text analyser. I have created the program but it is all within the main method. The specification states that I have to have at least two methods within my Program.
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
public class Analyser {
public static void main(String[] args) throws FileNotFoundException,
UnsupportedEncodingException {
[code]....
View Replies
View Related
May 1, 2015
Java Code:
package methods;
import java.util.*;
import javax.swing.*;
public class Methods {
public static void main(String[] args) {
// TODO Auto-generated method stub
char choicee2;
[Code] .....
View Replies
View Related
Aug 22, 2014
I'm working on a side project, which will eventually hopefully be a Pokedex, and I've just been going to it at the end of every chapter and using the stuff I've learned to work on it.So I just read chapter 3, which is all about variables and teaches how to use arrays.
my question is, does an array have to be declared inside a method? Because I'm trying to create an array inside a class without any methods and without the main, and I continuously get errors. Here's a quick working of my code that won't compile.
class blah {
blah a[] = new blah[7];
a[0] = new blah();
}
The error message focuses on a[0] = new blah(); Telling me the 0 should be a ], the = is an illegal start of type, so on and so forth. The program compiles completely fine if it's within a method, like this:
class blah {
void a() {
blah a[] = new blah[7];
a[0] = new blah();
}
}
Or if I have public static void main (String[]args); But I'm trying to practice working outside of main.So does an array have to be within a method,
View Replies
View Related
Oct 20, 2014
I'm reading from one file and writing it into another.I then want to delete the first file and use the second (it will get the first files name) .My sample java file works completely fine but it doesn't work on my actual file -it looks like it populates my test file like it should but it does not delete the original. Occasionally DMap.xml won't delete either - I try and rename it and normally I get the error of 'the file is open in Java platform SE binary' so the files is open somewhere - but I thought I had closed it correctly so have I done that wrong? I have put the basic code :
public class DeleteEnvironmentsWindow extends JDialog {
String xmlFile = "c:DMap.xml";
String fromFile =xmlFile
public void removeEnvironment(){
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
Document doc = null;
[code]....
View Replies
View Related
May 3, 2015
Lets say in method 1 I want to print the numbers 1 - 10. Easy stuff. I then print that to the
PrintStream outFile = new PrintStream(new File ("output5_01")); I declared.
Now I'm in another methods, How do I print lets say 11- 20 without erasing the first methods printed results?
so my desired results would be
outFile
-------------------------------
(From 1st method) 1- 10
(From 2nd method) 11-20
As of now the second method always over writes the first. None of my books cover this and its very frustrating when the entire code is done but this won't let me write to the file
View Replies
View Related
Feb 14, 2015
I'm new to Java, and I just created this script:
public class HelloWorld {
public static void main(String[] args) {
String firstLine;
String startUp;
int hour, minute;
[code]...
Every time I try to run this is eclipse, I only get the first part, so it reads in the console: "Hello, world. The time is now 9:15. I'm tired."I want it to read: "Hello, world. The time is now 9:15. I'm tired. (new line) Today is Wednesday."
View Replies
View Related
Oct 20, 2014
know my code sample file of renaming a file and deleting an original file will work fine but when I use the code within my main java file - it appears to populate the file that I want populating fine but wont delete the origional. I have everything on my c drive so I can very easily keep track of what files I do and don't have.
Can using the same files in different methods cause problems? (Beginning Java forum at JavaRanch)
View Replies
View Related