/*******************************************************************************
* Copyright (c) 2011-2014 Fernando Petrola
*
* This file is part of Dragome SDK.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
******************************************************************************/
package com.dragome.tests.lambda;
import java.util.EventListener;
import java.util.concurrent.Callable;
import java.util.function.Predicate;
public class Test1
{
public class ActionEventTest
{
private String actionCommand;
public String getActionCommand()
{
return actionCommand;
}
public ActionEventTest(int i, int j, String string)
{
this.actionCommand= string;
}
}
private int instanceVar= 0;
public void lambda_using_instance_variables()
{
Runnable lambda= () -> {
instanceVar= 42;
};
lambda.run();
}
public void lambda_using_instance_variables2()
{
Integer localVar= 41;
Runnable lambda= () -> {
instanceVar= localVar;
};
lambda.run();
}
public void lambda_using_local_variables()
{
Integer localVar= 43;
Runnable lambda= () -> {
Integer localVar2= localVar;
};
lambda.run();
}
public interface ActionListener extends EventListener
{
public void actionPerformed(ActionEventTest e);
}
public void lambda_using_local_variables3()
{
Integer localVar= 43;
ActionListener a= (ActionEventTest e) -> {
System.out.println(e.getActionCommand());
System.out.println(localVar);
};
a.actionPerformed(new ActionEventTest(1, 2, "3"));
}
public void lambda_using_local_variables2()
{
Integer localVar1= 43;
Integer localVar2= 44;
Integer localVar3= 45;
Runnable lambda= () -> {
Integer localVar1a= localVar1;
Integer localVar2a= localVar2;
Integer localVar3a= localVar3;
};
lambda.run();
}
static class IntPredicates
{
public static boolean isOdd(Integer n)
{
return n % 2 != 0;
}
public static boolean isEven(Integer n)
{
return n % 2 == 0;
}
public static boolean isPositive(Integer n)
{
return n >= 0;
}
}
public void method_references_to_virtual_methods() throws Exception
{
String foo= "foo";
Callable<String> ref= foo::toUpperCase;
String call= ref.call();
System.out.println(call);
Predicate<Integer> isOdd= IntPredicates::isOdd;
Predicate<Integer> isEven= IntPredicates::isEven;
boolean odd= isOdd.test(3);
boolean even= isEven.test(7);
}
public static void main(String[] args) throws Exception
{
Test1 lambdaTest= new Test1();
lambdaTest.method_references_to_virtual_methods();
lambdaTest.lambda_using_local_variables();
lambdaTest.lambda_using_instance_variables();
lambdaTest.lambda_using_local_variables2();
lambdaTest.lambda_using_instance_variables2();
lambdaTest.lambda_using_local_variables3();
}
}