Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /usr/home/shadbb/domains/czub.info/public_html/wp-content/plugins/wp-syntax/wp-syntax.php on line 383
When create a GUI class I’m find a problem of access to the variables in another class using a universal procedure. Here is my solution to the problem 🙂
package testexample;
import java.lang.reflect.Field;
class S3Element
{
private Object obj=null;
private Field fld=null;
private String fieldName="";
/**
*
* @param obj - A reference object to override
* @param fieldName - field name to modify the variable
*/
public S3Element(Object obj, String fieldName){
this.obj=obj;
this.fieldName=fieldName;
this.fld=findField(obj, fieldName);
}
private static Field findField(Object genericObject, String filedName){
if (genericObject != null){
Field[] declaredFields=genericObject.getClass().getDeclaredFields();
for (int i=0; i < declaredFields.length; i++){
Field field=declaredFields[i];
if (field.getName().equals(filedName)){
field.setAccessible(true);
return field;
}
}
return findField((Class) genericObject.getClass().getGenericSuperclass(), filedName);
}
throw new RuntimeException("No find field: " + filedName);
}
/**
* Setting a new field value
*
* @param value
*/
public void setValue(Object value){
try {
System.out.println("setValue for field: " + fieldName + " in object " + obj.getClass().getName() + " to " + value.toString());
fld.set(obj, value);
} catch (Exception e) {
throw new RuntimeException("Error setValue for field: " + fieldName + " in object" + obj.getClass().getName(), e);
}
}
/**
*
* @return
*/
public Object getValue(){
try {
return fld.get(obj);
} catch (Exception e) {
throw new RuntimeException("Error getValue for field: " + fieldName + " in object" + obj.getClass().getName(), e);
}
}
}
class Test
{
public float testFloat=2f;
public int testInteger=100;
public void run(){
S3Element el=new S3Element(this, "testFloat");
System.out.println(" testFloat: " + testFloat);
el.setValue(10f);
System.out.println(" testFloat: " + testFloat);
el.setValue(20f);
System.out.println(" testFloat: " + testFloat);
el.setValue(30f);
System.out.println(" testFloat: " + testFloat);
el=new S3Element(this, "testInteger");
System.out.println(" testInteger: " + testInteger);
el.setValue(10);
System.out.println(" testInteger: " + testInteger);
el.setValue(20);
System.out.println(" testInteger: " + testInteger);
el.setValue(30);
System.out.println(" testInteger: " + testInteger);
}
}
public class TestExample
{
public static void main(String[] args){
Test tst=new Test();
tst.run();
}
} |
package testexample;
import java.lang.reflect.Field;
class S3Element
{
private Object obj=null;
private Field fld=null;
private String fieldName="";
/**
*
* @param obj - A reference object to override
* @param fieldName - field name to modify the variable
*/
public S3Element(Object obj, String fieldName){
this.obj=obj;
this.fieldName=fieldName;
this.fld=findField(obj, fieldName);
}
private static Field findField(Object genericObject, String filedName){
if (genericObject != null){
Field[] declaredFields=genericObject.getClass().getDeclaredFields();
for (int i=0; i < declaredFields.length; i++){
Field field=declaredFields[i];
if (field.getName().equals(filedName)){
field.setAccessible(true);
return field;
}
}
return findField((Class) genericObject.getClass().getGenericSuperclass(), filedName);
}
throw new RuntimeException("No find field: " + filedName);
}
/**
* Setting a new field value
*
* @param value
*/
public void setValue(Object value){
try {
System.out.println("setValue for field: " + fieldName + " in object " + obj.getClass().getName() + " to " + value.toString());
fld.set(obj, value);
} catch (Exception e) {
throw new RuntimeException("Error setValue for field: " + fieldName + " in object" + obj.getClass().getName(), e);
}
}
/**
*
* @return
*/
public Object getValue(){
try {
return fld.get(obj);
} catch (Exception e) {
throw new RuntimeException("Error getValue for field: " + fieldName + " in object" + obj.getClass().getName(), e);
}
}
}
class Test
{
public float testFloat=2f;
public int testInteger=100;
public void run(){
S3Element el=new S3Element(this, "testFloat");
System.out.println(" testFloat: " + testFloat);
el.setValue(10f);
System.out.println(" testFloat: " + testFloat);
el.setValue(20f);
System.out.println(" testFloat: " + testFloat);
el.setValue(30f);
System.out.println(" testFloat: " + testFloat);
el=new S3Element(this, "testInteger");
System.out.println(" testInteger: " + testInteger);
el.setValue(10);
System.out.println(" testInteger: " + testInteger);
el.setValue(20);
System.out.println(" testInteger: " + testInteger);
el.setValue(30);
System.out.println(" testInteger: " + testInteger);
}
}
public class TestExample
{
public static void main(String[] args){
Test tst=new Test();
tst.run();
}
}
Możliwość komentowania jest wyłączona.