调用一个类的私有方法,java也提供了一些方法: 但是我们不需了解这个含有私有方法的类的内部实现。
测试用的类:
访问的方法:
import java.lang.reflect.Method;
public class PrivateTestCall {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
//method one
Method m=PrivateTest.class.getDeclaredMethod("print", new Class[]{});
m.setAccessible(true);
m.invoke(new PrivateTest(), new Object[]{});
//method two
PrivateTest privateTest=new PrivateTest();
Method m1=privateTest.getClass().getMethod("print2", null);
m1.setAccessible(true);
m1.invoke(privateTest, null);
//method three
Method m2=PrivateTest.class.getMethod("print2", null);
m2.setAccessible(true);
m2.invoke(new PrivateTest(), null);
}catch(Exception e){
e.printStackTrace();
}
}
}
结果:
测试用的类:
package base;
public class PrivateTest {
private void print(){
System.out.println("in private method");
}
public void print2(){
System.out.println("in public method");
}
}
public class PrivateTest {
private void print(){
System.out.println("in private method");
}
public void print2(){
System.out.println("in public method");
}
}
访问的方法:
import java.lang.reflect.Method;
public class PrivateTestCall {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
//method one
Method m=PrivateTest.class.getDeclaredMethod("print", new Class[]{});
m.setAccessible(true);
m.invoke(new PrivateTest(), new Object[]{});
//method two
PrivateTest privateTest=new PrivateTest();
Method m1=privateTest.getClass().getMethod("print2", null);
m1.setAccessible(true);
m1.invoke(privateTest, null);
//method three
Method m2=PrivateTest.class.getMethod("print2", null);
m2.setAccessible(true);
m2.invoke(new PrivateTest(), null);
}catch(Exception e){
e.printStackTrace();
}
}
}
结果:
in private method
in public method
in public method
in public method
in public method
相关推荐
例如,在`TestCaseHelper.java`中,可能会有一个私有方法`processData()`,我们可以使用反射来调用它并验证处理数据后的结果。 ```java Method privateMethod = TestCaseHelper.class.getDeclaredMethod(...
私有构造函数在Java中是一种非常有用的设计技巧,它不仅可以帮助实现诸如工厂模式或单例模式这样的设计模式,还可以增强类的封装性和代码的可维护性。通过限制构造函数的可见性,开发者可以更好地控制对象的创建过程...
同样的,也可以使用反射调用私有方法。`Method`类提供了`getDeclaredMethod()`方法用于获取指定的私有方法,然后通过`invoke()`方法执行这个方法: ```java private void privateMethod() { System.out.println(...
- 方法覆盖允许子类对父类中已有的非私有(public、protected或包访问)方法进行重新定义,以实现不同的功能或者增强原有功能。 - 关键字`@Override`用于标记一个方法是覆盖了父类的方法,提高代码可读性和编译时...
### Java程序员面试技巧详解 #### 面向对象的四大特征 在Java面试过程中,面试官经常会提问关于面向对象的基本概念及其特征。了解并掌握这些基本概念对于通过面试至关重要。 **1. 抽象** 抽象是指在编程时,只...
1. **只适用于公共方法**:EL只能调用JavaBean的公共方法,私有方法无法直接访问。 2. **方法签名匹配**:传递给方法的参数必须与方法的参数类型相匹配,否则会抛出异常。 3. **返回值处理**:EL表达式的返回值会被...
通过反射,我们可以实现动态加载类、调用私有方法、修改字段值等高级功能。 8. **注解**:注解(Annotation)提供了元数据,用于向编译器或JVM提供额外信息。学习如何创建自定义注解并结合处理器(Annotation ...
本篇文章将深入探讨Python私有函数的原理、调用方法以及相关的编程实践。 首先,私有函数的定义标准是函数名前有两个下划线(`__`),但不以两个下划线结尾。例如,`__privatefun()` 就是一个私有函数。尽管Python...
- 动态调用方法:使用反射动态调用类的方法,包括私有方法。 - 创建对象:通过反射创建对象,实现动态加载。 9. **注解** - 定义注解:理解元注解,自定义注解并使用。 - 注解处理器:利用Java编译器API编写...
- `java.lang.reflect`包:提供了`Constructor`、`Method`和`Field`等类,用于运行时调用私有方法、访问私有字段等。 以上只是部分知识点,实际的"java常用代码方法"文件中可能包含更多实用技巧和示例。通过学习和...
同时,为了避免空指针异常,应该将确定不为空的对象放在`equals`方法的调用方。 **示例代码**: ```java String str1 = null; String str2 = "test"; // 正确的方式 if ("test".equals(str1)) { System.out....
Java方法是Java编程语言的核心组成部分,...理解并灵活运用这些方法相关的概念和技巧,将极大地提升你的Java编程能力,使你能够编写更高效、可维护的代码。在实践中不断练习和探索,你将逐渐成为一名出色的Java开发者。
在JavaScript中,虽然没有像Java或C++那样的内置关键字来直接声明私有变量或方法,但我们可以通过一些技巧来模拟这种行为。 1. **闭包**:这是JavaScript中实现私有变量和私有函数最常见的方法。闭包是一种特殊的...
- **公有方法**: `set`和`get`方法通常是`public`的,这样可以在类外部调用这些方法来访问私有变量。 - **安全性**: 通过`set`方法可以对传入的数据进行校验,确保数据的有效性。 #### 四、具体示例 假设我们有一...
6. **反射机制**:理解反射的基本用法,如创建对象、调用方法、访问私有成员。 7. **集合框架**:讨论ArrayList、LinkedList、HashMap、HashSet等的区别和使用场景。 8. **接口与抽象类**:对比接口和抽象类,分析...
例如,基类可能有一个protected方法,让子类可以重写并访问,但不允许外部类直接调用。这样,子类可以根据需要扩展功能,同时保持基类的稳定性。 此外,Java的访问权限控制在实现继承、接口和内部类时也有重要作用...
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有高度的灵活性,尤其在处理框架、插件系统以及元数据驱动...
在学习Java基础知识时,了解和掌握一些关键概念和技巧至关重要。以下是一些关于Java学习的重要知识点: 1. **基本数据类型**:Java有八种基本数据类型,包括byte、short、int、long、float、double、boolean和char...
Java程序设计课程实验8主要关注的是封装和构造方法这两个核心的面向对象编程概念。...通过这个实验,学生不仅可以深入理解封装和构造方法的原理,还能提高自己的编程技巧,为后续更复杂的Java程序设计打下坚实的基础。
- **反射机制**:动态获取类信息,创建对象,调用方法,以及修改私有属性。 - **注解(Annotation)**:用于元数据,可以用于编译时检查、运行时处理或自动生成代码。 6. **设计模式**: - **常用设计模式**:...