Static Vs Dynamic Class Loading
Feb 2, 2015Understanding the difference between static and dynamic class loading.
It will be more useful if examples are given , especially for dynamic class loading(without using reflection).
Understanding the difference between static and dynamic class loading.
It will be more useful if examples are given , especially for dynamic class loading(without using reflection).
I have a question regarding static binding and dynamic binding. Say for example we have below hierarchy,
class Animal
{
public void eat() {
System.out.println("Animal Eating");
}
}
[Code] .....
1) a.eat(); // Prints Animal eating ---> Static Binding 2) a.eat(); // Prints Dog eating ----> Dynamic Binding
Static Binding means,compiler will be able to decide which method to call based on class type of reference variable at compile time.That is compiler will check whether method is available or not in class.
Dynamic binding means,at runtime JVM will run the method implementaton,based on the object which reference variable is pointing.
So basically compiler will check class type of reference variable and at runtime JVM will check what type of object reference variable is pointing.
Here my my doubt is , in below both cases,that is
1) a.eat(); // Prints Animal eating ---> Static Binding
2) a1.eat(); // Prints Dog eating ----> Dynamic Binding
At compile time,compiler will check whether method is available or not in class. Since eat() method is available ,then in both cases it should be Static binding. or at run time if JVM decides which method implementation to call,then JVM will check which object the reference variable is pointing,then in above 2 cases also JVM will check in Animal object and Dog object for the method eat(). Since eat() method available then both should be dynamic binding.
I am getting doubt on what parameters/conditions we are deciding which is static binding and which is dynamic binding .
Will compiler will check the type of reference variable and also type of object at compile time and when it is ambiguous it leaves the decision to JVM?
Or is it like if method call and method implementation belong to same class then it is static binding and if method call and method implementation belong to different class in same inheritance hierarchy then dynamic binding.
Suppose I have a class child
public class child{
public static int age = 1;
}
And I am using class child static variable age in class school
public class school{
int var_age;
public school(){ //school constructor
var_age = child.age;
}
}
Value in age of child class could be any of these below depending on some logic:
public static int age = 1;
public static int age = 2;
How could i achieve this where should i apply that logic? Also it is mandatory for class school code to remain same.
I have developed a window based chat application for chatting, screen sharing, file sharing, video playing.
All are working well on my local network systems (eg. dynamic server ip is 192.168.1.122). But if i try to run on my server (e.g. static server ip 50.62.8.22) it is not get connected..,
How does web server differentiates between request for static web page and request for dynamic web page? i think if web server receives request for static page directly renders that to server or else if request is for dynamic web page passes that to web app which processes the request and renders that to client. bUT how does web server differentiates between both the request.
View Replies View RelatedI am working on RichFaces 3.x/ JSF 1.2.I am currently working on a requirement to load dynamic sections and Mandatory/Non-Mandatory UI fields in a form?i.e. Based on one type of operation field selected in the form. I have to load the sections and fields with mandatory/non mandatory UI fields.
Is it possible to load the mandatory/Non-Mandatory fields in entire form(Around 200 elements) after selection of operation type dynamically? Note once operation type is selected it will be non-editable and subsequently, I need to load the whole page with different sets of mandatory/Non-Mandatory fields ?
From what i understand static methods should be called without creating an instance of the same class . If so why would they return an instance of the same class like in the following : public static Location locateLargest(double[][] a) , the Location class being the same class where the method is defined . I don't understand this , does it mean that every field and every method in the class must be static ? Meaning that you cannot have instances of the class because everything is static . Or it's just a mistake and the class Location cannot have a static method: public static Location locateLargest(double[][] a) ?
View Replies View RelatedAlright, I have two classes, this one
public class Player {
private String player;
public String getPlayer() {
return player;
}
private int strength;
private int defense;
[Code] .....
However, it says that under Player.getPlayer() that it 'Cannot make a static reference to the non-static method'.
Why I can create an Instance of a class that contains non static variables within the static main method ?
This program runs fine
import java.util.*;
public class Test{
public int j;
public static void main(String[] args) {
Test test1=new Test();
System.out.println(test1.j);
[Code] .....
This is a someway special question, because I am using jmonkeyEngine.
But the topic is simple:
I have 2 classes:
public class Spielbrett extends SimpleApplication {
public static void main(String[] args) {
Spielbrett app = new Spielbrett();
app.start();
}
@Override
public void simpleInitApp() {
[Code]...
as the main class and a second class for the chips:
public class Spielstein {
public Spatial stone;
public int player;
public int team;
private AssetManager assetManager = Spielstein.getAM(); //THIS IS THE PROBLEM
public Spielstein(int t_player, int t_team){
[Code]...
My problem is: I can't access getAM() from the first in the second class. If you know why I would be glad for an answer.
I’m trying to understand how to decide when to make a nested class static or non-static. These are my assumptions.
1) Make a nested class static if each instance of its enclosing class may have one or more instances of its nested class, for example, a HashMap has a static HashMap.Entry nested class because each HashMap instance may have one or more HashMap.Entry instances
2) Make a nested class non-static if each instance of its enclosing class must have only one instance of its nested class, for example, an AbstractButton has a non-static AbstractButton.Handler nested class because each AbstractButton instance must have only one AbstractButton.Handler instance.
I wrote a code to use static class. But, when I call the class in a outer class but, it gives an error. Is it mandatory to have a static class should have static variables when we declaring them??
public class StaticClassMain {
static class Sub{
String str="Example 1";
}
public static void main(String[] args) {
System.out.println(Sub.str);
}
}
I'm writing a custom class loader to load some .jar file
public class IQJarClassLoader extends ClassLoader {
private String jarFile = "json-simple-1.1.1.jar";
private Hashtable classes = new Hashtable();
public IQJarClassLoader() {
super(IQJarClassLoader.class.getClassLoader());
[Code] .....
I receive this exception :
Exception in thread "main" java.lang.ClassCastException: org.json.simple.parser.JSONParser cannot be cast to org.json.simple.parser.JSONParser
Everytime, because i don't cast. Casting an object to a class with the same name loaded by different classloaders is no different than trying to cast.
I am working on a project involving a class that has the attributes of one of its inner classes. Now, if possible, I would like to make it so that the inner class is not visible outside of the class. Also, some of the functional mechanics require that the class be an instance of the nested inner class (it extends the inner class). The following code snippet demonstrates the situation.
public class A extends A.B {
public static class B { //ideally I would like this to be private/protected.
}
}
When I try to compile this program, I get the error message "Cyclical inheritance involving A." This error does not make much sense because, since the inner class "B" is static, it requires no instance of "A" (it does not inherit from "A" or uses it). My question is "Is it possible to do something similar to this structure?" I have searched many forums in search of the answer but have not found anything that attempts to explain it. The closest problem that I have found is one relating to the inheritance of a nested inner class from another class. I would like to express that the problem that I am having involves a class defined within the inheriting class.
I have an Abstract Class called GameColorEffect which contains a number of non-static Inner Classes that extend their Parent Class, GameColorEffect. I want to be able to create instances of the Inner Classes, however my IDE, eclipse, prompts me with the error:
No enclosing instance of type GameColorEffect is accessible. Must qualify the allocation with an enclosing instance of type GameColorEffect
And eclipse shows me a possible solution which is to turn the Inner Classes to static, this would allow me to create instances, but not really. This is because using methods from the static Inner Classes that change values in the Inner Classes will do this for every instance of the same Inner Class which is literally like a single instance. However, I want these Inner Classes to be individual with their values and still be able to use them outside as instances. I've found out a possible solution, which I'm not sure works like I want it to:
Java Code : GameColorEffect = new GameColorEffect.ExampleEffect(); mh_sh_highlight_all('java');
However, this is in-compact because sometimes all I need is to use just a method like:
Java Code : new GameColorEffect.ExampleEffect(intensity).applyEffect() mh_sh_highlight_all('java');
And another solution that I already knew prior was that I could make the Inner Classes proper classes not inside of the GameColorEffect class, but this is also in-compact because I will have to have so many classes for the so many effects that I have.
I have a class Tree in which all the methods to build a tree are in place. But however I would want variable of by Tree which is pointing to the last node being added to the tree.
So basically every time you keep adding a node to the tree you tail pointer gets updated to point to the last node. I have this so far.
public class NonEmptyTree implements Tree {
private Tree left;
private int data;
private int leftleafCount;
private int rightleafCount;
private Tree right;
private Tree tail; // This variable must be shared by all the object. There needs to just one tail pointer to the tree.
public Tree insert( data ) {
tail = // gets updated every time when new node gets added.
when do they get called?
from my code
class MyJava{
static { System.out.println("initializing..."); }
public static void main(String[] args)
{
}
}
i did get the "initializing..." string output, even though i didn't create any MyJava objects.
from this fact, i inferred that initializing blocks get called once when the program compiles.
am i right?
Sandwich class. I have thus far completed creating a sandwich class with a seperate sandwich Tester class to run with it. (this is according to the assignment). Now I must create Static variables for the sandwich class:
Add two static variables to the Sandwich class to count how many sandwiches are sold and how many slices of tomato are used. Initialize each to 0.Where do you add code to increment the sandwich counter? Determine this and then add code.
public class Sandwich
{
static int numOfSold = 0;
static int slicesUsed = 0;
private String meat;
private int numOfSlicesOfTomato;
private boolean lettuce;
[code]....
I am getting an error trying to access a static method of another class...theyre both in the same package, I've tried importing the class.
I've tried to do A b=new A()
and then
b.evaluate();
Everything that I try I get the following error:
Exception in thread "main" java.lang.NoClassDefFoundError: B$A
Caused by: java.lang.ClassNotFoundException: B$A
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Code :
public class A{
public static String evaluate(String op) {
}
}
public class B{
String output=A.evaluate(input);
}
is it necessary that inner classes inside a static method be static . If yes Why?
View Replies View RelatedA common solution to this problem is to write a utility class whose responsibility is to log information. This class can have a flag that will allow you to turn the logging on and off. In addition you should be able to tell the class how much detail you want in the output. Ultimately, this class will give you the ability to control when information is logged, what information is logged, how often information is logged, and even where the information is logged. And you would be able to control all of this without changing a single line of code!
This type of utility class is commonly written using static methods and is referred to as a static class. In order to use the features of a utility class, the application can access the methods directly by referring the class name, eliminating the need to create an instance of the class in order to execute the methods.
While playing with arrays I've written this code:
import java.util.Arrays;
import java.util.Comparator;
class SimpleHolder extends Object {
private final int value;
public SimpleHolder(int value) {
this.value = value;
[Code] ....
According to The Java Tutorial, static nested classes should not have access to other members of the enclosing class. I'd suppose to get compile-time error in the BasicComparator class. However, my code compiles just fine. Am I missing something?
When importing static members of a class. Why are they only accessible within the constructor of the calling class, and not outside of it? Here's the source code to understand my question.
package Certification;
public class ExamQuestion {
static public int marks ;
static public void print(){
System.out.println(100);
[Code] ....
I have a list of uninstanciated class types and I wanted to call a static function from these "Class<? extends PropControl>" (without using reflection) that would create a new corresponding object instance but it appears I cant do that in java so now I want to create a factory that takes a class type as aparameter to create the corresponding object instance but this code dont compile:
Java Code:
public PropControl Create(Class<? extends PropControl> cls)
{
if(cls==HouseControl.class) <---- ERROR
{
here I create a new instance of HouseControl (that inherits PropControl)
}
} mh_sh_highlight_all('java');
I get this error :
incomparable types: Class<CAP#1> and Class<HouseControl>
where CAP#1 is a fresh type-variable:
CAP#1 extends PropControl from capture of ? extends PropControl
how do I achieve this ?
What happens to a static variable that is defined within a method of a class ?
View Replies View RelatedI am wondering if there is a way in jave to use enums WITHIN a class (without creating a separate enum class) without using private static final. Something like as folows:
class My Class {
myEnum {ACTIVE, INACTIVE, PENDING};
}
is there something like this available?